标签:
Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties:
For example,
Consider the following matrix:
[ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50] ]
Given target = 3
, return true
.
class Solution { public: bool searchMatrix(vector<vector<int>>& matrix, int target) { bool flag=false; if(matrix.size()==0) return flag; int m=matrix.size(); int n=matrix[0].size(); int row=0; for(int i=0;i<m;i++) { if(target<matrix[i][0]) { if(i==0) return flag; else row=i-1; break; } else if(target==matrix[i][0]||target==matrix[i][n-1]) { return true; } else if(target>matrix[i][0]&&target<matrix[i][n-1]) { row=i; break; } } if(target>matrix[row][n-1]) return flag; else if(target==matrix[row][n-1]) { return true; } int low=0,high=n-1; while(low<=high) { int mid=(low+high)/2; if(target<matrix[row][mid]) high=mid-1; else if(target>matrix[row][mid]) low=mid+1; else { flag=1; break; } } return flag; } };
class Solution { public: bool searchMatrix(vector<vector<int>>& matrix, int target) { bool flag=false; if(matrix.size()==0) return flag; int m=matrix.size(); int n=matrix[0].size(); if(m>0&&n>0) { int row=0; int col=n-1; while(row<m&&col>=0) { if(matrix[row][col]==target) { flag=1; break; } else if(matrix[row][col]>target) col--; else row++; } } return flag; } };
标签:
原文地址:http://blog.csdn.net/sinat_24520925/article/details/46475883