zoukankan      html  css  js  c++  java
  • 240.搜索二维数组 二分法

    思路:

      1.  暴力法加些限制条件 

        1) row<3 or col<3

        2)   matrix[ i ][ j ] > target: break

        3)  matirx[ i ][ 0 ] > target: return False

      2.  二分法(binary_search) :

        1) 判断循环进行条件:  (带等号是因为考虑到 l=r 时候取到答案)

          while l<=r:

        2). 判等条件为    (感觉可改进提高)

          if matrix[i][l] == target or matrix[i][r] == target or matrix[i][mid] == target:  return True
                  3)其配合的 端点更新为:
                    if matrix[i][mid]<target:
                        l = mid+1
                    elif matrix[i][mid]>target:
                        r = mid-1

    代码:

    class Solution:
        def searchMatrix(self, matrix, target):
            """
            :type matrix: List[List[int]]
            :type target: int
            :rtype: bool
            """
            if not matrix or len(matrix[0])==0:
                return False
            def binary_search(i,matrix,target):
                if matrix[i][0]>target:
                    return 'False'
                l = 0
                r = len(matrix[i])-1
                while l<=r:
                    mid = l + (r-l)//2
                    if matrix[i][l] == target or matrix[i][r] == target or matrix[i][mid] == target:
                        return True
                    if matrix[i][mid]<target:
                        l = mid+1
                    elif matrix[i][mid]>target:
                        r = mid-1
                return False
            nr = len(matrix)
            nc = len(matrix[0])
            for i in range(nr):
                res = binary_search(i,matrix,target)
                print('res:')
                print(res)
                if res == 'False':
                    break
                elif res == True:
                    return True

            return False
  • 相关阅读:
    某电校园网
    M100(3) 无线数传
    【转】大厦将倾,互联网将如何变革传统行业(下)
    【转】大厦将倾,互联网将如何变革传统行业(上)
    【转】用户十秒离开你网站的25个原因
    web及移动应用测试知识总结
    【转】Watir, Selenium & WebDriver
    ICMP协议
    我不会OOO,仍然可以XXX_转
    查看网络连接数目(解决TIME_WAIT过多造成的问题_转)
  • 原文地址:https://www.cnblogs.com/ChevisZhang/p/12883306.html
Copyright © 2011-2022 走看看