題目大意:
在一個二維數組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。
解題思路:
(1)一看到有序數組就想到了二分法查找,而在這個二維數組中,無法先按行或者先按列查找
(2)看了一下,不能從左上角和右下角開始查找和比較元素(不知道向下還是向右)
(3)不能從中間對角線開始比較(二異性)
正確的是:從左下角或者右上角開始比較。(例如右上角)因爲這樣元素大就可以向下移動元素小就可以向左移動
代碼如下:
public class Solution {
public boolean Find(int [][] array,int target) {
int row=0,col=array[0].length-1;
while(row<array.length && col>=0){
if(array[row][col]==target){
return true;
}else if(array[row][col]<target){
row++;
}else{
col--;
}
}
return false;
}
}