这道题目可以从右上角开始算,如果右上角数字大于 target,那么该列数字都大于它,y–,如果右上角数字小于 target,那么该行数字都小于它,x++。
不过最需要注意的是这个二维数组的行数和列数可能不同,不要在这里犯错误。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| class Solution { public: bool Find(int target, vector<vector<int>> array) { if(array.size()<=0) return false; int x=0; int y=array[0].size()-1; while(x<array.size() && y>=0){ int t=array[x][y]; if(t>target) y--; else if(t<target) x++; else return true; } return false; } };
|