遍历数组,由于矩阵从上到下,从右到左有序,因此可以从第0行第m-1列开始遍历,若mat[i][j]>x则左移,否则下移,直到找到目标元素。越界则直接返回空数组。时间复杂度O(m+n)。
public class Solution {
public int[] findElement(int[][] mat, int n, int m, int x) {
int i=0,j=m-1;
while(i>=0&&i<n&&j>=0&&j<m){
if(mat[i][j]==x){return new int[]{i,j};}
else if(mat[i][j]>x)--j;
else ++i;
}
return new int[]{};
}
}