劍指Offer-二維數組中的查找


題目描述

在一個二維數組中(每個一維數組的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。

題目大意及分析

這道題其實就是判斷二維數組中能不能找的到所給的 target 這個數,通過觀察二位數組的排列規律(每一行: 左→右遞增;每一列:上→下遞增),我們可以發現在數組左下角的數向上是遞減,向右是遞增。(右上角的數向下是遞增,向左是遞減)用這個特殊的點,我們就可以很好的遍歷整個數組了。我的參考代碼是選取的右上角的數。

代碼

public class Solution {
    public boolean Find(int target, int [][] array) {
        if(array.length==0 || array[0].length==0)//數組為空返回False,否則本題不會完全通過;
            return false;
        int x = 0;
        int y = array[0].length-1;
        int w = array[x][y];//右上角的數
        while(w != target){
            if(x >= array.length-1 || y <= 0)
                return false;
            if(w > target)
                y--;
            if(w < target)
                x++;
            w = array[x][y];
        }
        return true;
    }
}

更多內容大家可以訪問我的個人博客:一只大大怪


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM