劍指offer牛客系列——二維陣列的查詢
阿新 • • 發佈:2019-01-14
題目描述
在一個二維陣列中(每個一維陣列的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函式,輸入這樣的一個二維陣列和一個整數,判斷陣列中是否含有該整數。
考慮如上圖所示的陣列,一右上角為起點,若想找的值大於起點,則範圍向下縮小,即row+1;
若小於起點,範圍向左縮小,col-1
所以target值為7時的下一狀態應在綠色塊上判斷。
起點也可以選在左下角,只有滿足向兩個方向走判斷條件不一樣即可。左上角和右下角就不可以,因為兩個方向都是大於或小於起點的。
public class Solution {
public boolean Find(int target, int [][] array) {
if(array== null|| array.length==0|| array[0].length==0) return false;
int row= 0, col= array[0].length-1;
while(col>=0 && row<= array.length-1){
if(array[row][col]== target) return true;
else if(array[row][col]< target) row++;
else if(array[row][col]> target) col--;
}
return false;
}
}