Monday, May 11, 2015

Search 2D Matrix II

来源:CC150

原帖:CC150 9.6

题目:
有一个n*m的2维矩阵matrix,矩阵每一行,每一列都是有序的(升序)。判断矩阵中是否存在元素target。提示:时间复杂度O(n+m),空间复杂度O(1)。
Solution: 从右上角或者左下角开始进行。

代码:
 bool exists(vector<vector<int> > &matrix, int target) {  
   if(matrix.empty()) {  
     return false;  
   }  
   int M = matrix.size(), N = matrix[0].size();  
   int i = 0, j = N - 1;  
   while (i < M && j >= 0) {  
     if (matrix[i][j] == target) {  
       return true;  
     } else if (matrix[i][j] < target) {  
       i++;  
     } else {  
       j--;  
     }  
   }  
   return false;  
 }  

No comments:

Post a Comment