【 題目】 給定一個有N*M的整型矩陣matrix和一個整數K,matrix的每一行和每一 列都是排好序的。 實現一個函數, 判斷K是否matrix中。 若數據如下
{
{0,1,2,5},
{2,3,4,7},
{4,4,4,8},
{5,7,7,9}
}
如果K爲7, 返回true; 如果K爲6, 返回false。
【 要求】 時間複雜度爲O(N+M), 額外空間複雜度爲O(1)。
思路:
從右下方最大值的地方開始找,先橫向移動,如果遇到比target值小的再縱向移動,反之亦可.
public class FindNumberInQueue {
public boolean contains(int [] [] arr, int target){
int indexY = arr.length -1;
int indexX = arr.length -1;
boolean res = false;
while (indexX != 0 || indexY != 0){
if (arr[indexX][indexY] == target){
res = true;
}
if (arr[indexX][indexY] > target && indexX > 0){
indexX--;
}else if(arr[indexX][indexY] < target && indexY > 0){
indexY--;
}
}
return res;
}
}