Leetcode 搜索二维矩阵 II

Posted 阿十三

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode 搜索二维矩阵 II相关的知识,希望对你有一定的参考价值。

编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:

  • 每行的元素从左到右升序排列。
  • 每列的元素从上到下升序排列。

示例:

现有矩阵 matrix 如下:

[
  [1,   4,  7, 11, 15],
  [2,   5,  8, 12, 19],
  [3,   6,  9, 16, 22],
  [10, 13, 14, 17, 24],
  [18, 21, 23, 26, 30]
]

给定 target = 5,返回 true

给定 target = 20,返回 false

 

思路:先二分target在哪一行,然后在对行进行二分找在哪一列

技术分享图片
 1 boolean searchMatrix(int[][] matrix, int target) {
 2         if(matrix.length==0||matrix[0].length==0)
 3         {
 4             return false;
 5         }
 6         
 7         int l=0,r=matrix.length-1;
 8         int mid=0;
 9         while(l<=r)
10         {
11             mid=(l+r)/2;
12             if(target==matrix[mid][0])
13                 return true;
14             else if(target>matrix[mid][0])
15                 l=mid+1;
16             else r=mid-1;
17         }
18         for(int i=0;i<=mid;i++)
19         {
20             int left=0,right=matrix[0].length-1;
21             while(left<=right)
22             {
23                 int m=(left+right)/2;
24                 if(matrix[i][m]==target)
25                     return true;
26                 else if(matrix[i][m]<target)
27                     left=m+1;
28                 else right=m-1;
29             }
30         }
31         return false;
32         
33     }
View Code

 

以上是关于Leetcode 搜索二维矩阵 II的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 搜索二维矩阵 II

《LeetCode之每日一题》:188.搜索二维矩阵 II

5-005-(LeetCode- 240) 搜索二维矩阵 II

Leetcode 搜索二维矩阵 II

LeetCode-数组搜索二维矩阵 II

Leetcode之二分法专题-240. 搜索二维矩阵 II(Search a 2D Matrix II)