在行列都排好序的矩陣中找數

【 題目】 給定一個有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;
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章