https://leetcode-cn.com/problems/search-a-2d-matrix/

# -*- coding:utf-8 -*-

class Solution(object):
    def searchMatrix(self, matrix, target):
        """
        :type matrix: List[List[int]]
        :type target: int
        :rtype: bool
        """
        if len(matrix) == 0 or len(matrix[0]) == 0:
            return False
        target_list_idx = 0
        for i in range(len(matrix)):
            if matrix[i][0] > target:
                break
            target_list_idx = i
        target_list_len = len(matrix[target_list_idx])
        left = 0
        right = target_list_len - 1
        while left <= right:
            if left < 0 or right > target_list_len - 1:
                return False
            mid = int((left + right) / 2)
            nub = matrix[target_list_idx][mid]
            if nub == target:
                return True
            elif nub < target:
                left = mid + 1
            else:
                right = mid - 1
        return False
if __name__ == '__main__':
    matrix = [
        [1, 3, 5, 7],
        [10, 11, 16, 20],
        [23, 30, 34, 50]
    ]
    target =3
    matrix = [[1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50]]
    # print(len(matrix))
    # print(len(matrix[0]))
    print(Solution().searchMatrix(matrix, target))

我又开始了我又开始了我又开始了

思路:先搜索每一行的0号元素,然后在列表中使用二分查找。

我估计我时间复杂度这么低的原因是好多人没二分吧哈哈哈捡个漏。

分类: 算法

0 条评论

发表回复

Avatar placeholder

您的电子邮箱地址不会被公开。 必填项已用*标注