由于二维数组是有序的,因此可以从左下角元素m是一行里面最小,一列里面最大的
若target>m ,则只能从该行从左往右,即列值++
若target<m,则只能从上一行遍历,则行--
target = m, 则返回true
m初始值应该为array[array.length-1][0]
public class Solution {
public boolean Find(int target, int [][] array) {
int row = array.length-1;
int col = 0;
while(row>=0 && col<array[0].length){
if (array[row][col]>target){
row--;
}
else if (array[row][col]<target){
col++;
}
else return true;
}
return false;
}
}
京公网安备 11010502036488号