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
  • 相关阅读:
    linux awk命令详解
    Linux 大页面使用与实现简介(转)
    二层设备与三层设备的区别--总结
    Windows下的cd命令
    linux常用命令
    上班第一天
    linux 内核移植和根文件系统的制作
    Sizeof与Strlen的区别与联系
    嵌入式软件工程师面试题
    SpringBoot简单打包部署(附工程)
  • 原文地址:https://www.cnblogs.com/ChevisZhang/p/12883306.html
Copyright © 2011-2022 走看看