不难,但是没一下子捋顺,做了46分钟42秒才完成。。
public boolean findNumberIn2DArray(int[][] matrix, int target) { int n = matrix.length; //n行 if(n==0) return false; int m = matrix[0].length; //m列 if(m == 0) return false; int i = m-1 , j = 0; while(i>=0 && j<n){ if(matrix[j][i] == target) return true; if(matrix[j][i] > target) i--; else{ while(j<n){ if(matrix[j][i] == target) return true; if(matrix[j][i] < target) j++; else break; } } } return false; }
从右上角的元素开始进行比较,若相等,返回true;
target若小于,向左移动;
target若大于,开始考虑是否向下移动,直到结束。