遍历数组,由于矩阵从上到下,从右到左有序,因此可以从第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[]{};
    }
}