74.Search a 2D Matrix

25 年 8 月 25 日 星期一
188 字
1 分钟

74. Search a 2D Matrix

自己写的递归

python
class Solution:
    def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
        m = len(matrix)
        n = len(matrix[0])
        l = m * n
        def get_loca(i):
            return i // n, i % n

        ans = False
        def bisearch(start, end):
            mid = (start + end) // 2
            i, j = get_loca(mid)
            if start > end or i * n + j > m*n - 1:
                return
            if matrix[i][j] == target:
                nonlocal ans
                ans = True
                return
            if matrix[i][j] < target:
                bisearch(i * n + j + 1, end)
            else:
                bisearch(start, i * n + j - 1)

        bisearch(0, m*n-1)
        return ans

用循环写比较好:

循环

python
class Solution:
    def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
        m = len(matrix)
        n = len(matrix[0])
        left, right = 0, m * n - 1
        while left <= right:
            mid = (left + right) // 2
            i, j = mid // n, mid % n
            v = matrix[i][j]
            if v == target:
                return True
            if v > target:
                right = mid - 1
            else:
                left = mid + 1
        return False

文章标题:74.Search a 2D Matrix

文章作者:Sirui Chen

文章链接:https://blog.siruichen.me/posts/74search_a_2d_matrix[复制]

最后修改时间:


商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接,您可以自由地在任何媒体以任何形式复制和分发作品,也可以修改和创作,但是分发衍生作品时必须采用相同的许可协议。
本文采用CC BY-NC-SA 4.0进行许可。