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
  • 相关阅读:
    java架构之路-(nginx使用详解)nginx的反向代理和优化配置
    java架构之路-(nginx使用详解)nginx的安装和基本配置
    java架构之路-(mysql底层原理)Mysql之让我们再深撸一次mysql
    java架构之路(mysql底层原理)Mysql之Explain使用详解
    java架构之路-(mysql底层原理)Mysql索引和查询引擎
    java架构之路(多线程)JMM和volatile关键字
    算法初步---基本的数据结构(java为例)
    python基础之Matplotlib库的使用一(平面图)
    使用NumPy、Numba的简单使用(二)
    使用NumPy、Numba的简单使用(一)
  • 原文地址:https://www.cnblogs.com/ChevisZhang/p/12883306.html
Copyright © 2011-2022 走看看