题解 | #二维数组中的查找#
二维数组中的查找
https://www.nowcoder.com/practice/abc3fe2ce8e146608e868a70efebf62e
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param target int整型
* @param array int整型vector<vector<>>
* @return bool布尔型
*/
bool Find(int target, vector<vector<int> >& array) {
// write code here
int a=array.size();
int b=array[0].size();
int i=0;int j=b-1;
while(i<a&&j>=0){
if(array[i][j]<target) i++;
else if (array[i][j]>target)j--;
else{
return true;
}
}
return false;
}
};
取最右上角位置 array[i][j] i=0; j=array[0].size()-1; 这样的i是最小,j是最大。如果目标值比当前位置值大,那么目标值如果存在必然在下侧i++。如果目标值比当前位置值小,那么目标值如果存在必然在左侧j--。这样时间复杂度满足o(m+n)

查看9道真题和解析
