因为行和列的元素是有序递增的,所以大约在副对角线附近的元素就是每个一主对角线上所有元素的中间值,因此从右上角到左下角进行遍历,寻找给定值的元素。
class Solution {
public:
vector<int> findElement(vector<vector<int> > mat, int n, int m, int x) {
vector<int> result(2,0);
int row=0, col=m-1;
while(row<n && col>=0){
if(mat[row][col]==x){
result[0]=row;
result[1]=col;
break;
}
else if(x < mat[row][col]) col--;
else row++;
}
return result;
}
};