LeetCode每日一题:240搜索二维矩阵II

Posted lxy-java

tags:

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

题目描述:

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

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

 

方法一:暴力法

  没啥说的,直接搜。时间复杂度o(mn)  面试0分

 

方法二:二分搜索 

  利用每一行的升序特性,对每一行进行二分搜索。时间复杂度o(n*logn)

 1 class Solution {
 2     public boolean searchMatrix(int[][] matrix, int target) {
 3         if(matrix==null || matrix.length==0){
 4             return false;
 5         }
 6         for(int i=0;i<matrix.length;i++){
 7             if(binarySearch(matrix,i,target)){
 8                 return true;
 9             }
10         }
11         return false;
12     }
13     private boolean binarySearch(int[][] matrix,int row,int target){
14         int left = 0;
15         int right = matrix[row].length-1;
16 
17         while(left<=right){
18             int mid = left + (right-left) / 2;
19 
20             if(matrix[row][mid] == target){
21                 return true;
22             }
23 
24             if(matrix[row][mid] < target){
25                 left = mid + 1;
26             }else{
27                 right = mid - 1; 
28             }
29 
30         }
31         return false;
32     }
33 }

 

方法三:

  从左下开始搜索,比target小,向左。比target大,向右。时间复杂度o(m+n)

 1 class Solution {
 2     public boolean searchMatrix(int[][] matrix, int target) {
 3         if(matrix.length==0){
 4             return false;
 5         }
 6         int m = matrix.length;
 7         int n = matrix[0].length;
 8         int j = 0;
 9         int i = n-1;
10         while(i>=0&&j<m){
11             if(matrix[j][i]==target){
12                 return true;
13             }
14             if(matrix[j][i]>target){
15                 i--;
16             }else{
17                 j++;
18             }
19         }
20         return false;
21     }
22 }

 

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

leetcode打卡--240. 搜索二维矩阵 II

LeetCode 492. 构造矩形 / 638. 大礼包 / 240. 搜索二维矩阵 II

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

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

Leetcode 240.搜索二维矩阵II

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