码迷,mamicode.com
首页 > 其他好文 > 详细

【二分查找】74. 搜索二维矩阵

时间:2020-05-05 12:37:47      阅读:47      评论:0      收藏:0      [点我收藏+]

标签:tor   条件   查找   color   二维矩阵   mamicode   解答   solution   target   

题目:

技术图片

 

 

 

解答:

按杨氏矩阵的方法求解,时间复杂度为O(m+n),其中m为矩阵的行数,n为矩阵的列数。

 1 class Solution {
 2 public:
 3     bool searchMatrix(vector<vector<int>>& matrix, int target) 
 4     {
 5         if(matrix.empty() || matrix[0].empty())
 6         {
 7             return false;
 8         }
 9 
10         //从左下角上->右上角寻找目标值
11         int x = matrix.size() - 1;
12         int y=0;
13         
14         while(x >= 0 && y < matrix[0].size())
15         {
16             if (matrix[x][y] > target)
17             {
18                 x--;//[x,y]的值比目标值大,上移
19             }
20             else if(matrix[x][y]<target)
21             {
22                 y++;//[x,y]的值比目标值小,右移
23             }
24             else
25             {
26                 return true;
27             }
28         }
29         return false;
30     }
31 };

 

方法二:二分查找。

标准的二分查找模板,将二维矩阵拖为一维矩阵,然后就是一个有序的一维数组了,利用二分查找就行。

 1 class Solution {
 2 public:
 3     
 4     bool searchMatrix(vector<vector<int>>& matrix, int target) 
 5     {
 6         if(matrix.empty() || matrix[0].empty())
 7         {
 8             return 0;
 9         }
10 
11         int left = 0;
12         int right = matrix.size() * matrix[0].size() - 1;
13 
14         int n = matrix[0].size();
15 
16         while(left <= right)//循环结束的条件为区间内没有元素了
17         {
18             int mid = left + ((right - left) >> 1);
19 
20             if(matrix[mid/n][mid%n] > target)
21             {
22                 right = mid - 1;
23             }
24             else if(matrix[mid/n][mid%n] < target)
25             {
26                 left = mid + 1;
27             }
28             else 
29             {
30                 return true;
31             }
32         }
33         return false;
34     }
35 };

 

【二分查找】74. 搜索二维矩阵

标签:tor   条件   查找   color   二维矩阵   mamicode   解答   solution   target   

原文地址:https://www.cnblogs.com/ocpc/p/12830189.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!