微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python高效 二分法查找

 

用位移的方法来做除法

 

6 110 右移一位,把最右边的一位删掉,是11,是3

7 111右移一位,把最右边的一位删掉,是11,是3

偶数与偶数+1的右移是一样的,有点像int转换,

print('int',int(25.8))

结果为25

int(bb)的好处,结果不会越界,如果在图像上四舍五入,有可能导致图像越界。

下面列出二分法的代码


import math
from typing import List

import numpy as np



class Solution:
    def searchmatrix(self, matrix: List[List[int]], target: int) -> bool:
        import numpy as np
        arr = np.array(matrix)
        # 通过numpy可以直接reshape
        arr = arr.reshape((-1, ))
        left, right = 0, arr.shape[0]
        if right == 0:
            return False
        # 套用二分
        while left+1 < right:
            m = (left + right) >> 1

            print("left",left,"right",right,"middle",m,"m_val

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐