刷題_二維數組中查找


根據網絡資源學習的筆記整理如下:如有侵權,請聯繫我立即刪除!

二維數組中查找

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

遍歷法

public class Solution {
    public boolean Find(int target, int [][] array) {
        boolean result = false;
        for(int i = 0;i< array.length;i++){
            for(int j = 0;j< array[0].length;j++){
                if(array[i][j] == target){
                    result = true;
                   break;
                }
            }    
        }
        return result;
    }
}

邏輯思路類

以下代碼及思路來自於 IDEA_TEYU_1112的博客: 牛客網刷題java之在一個二維數組中….

public class Solution {
    public boolean Find(int target, int [][] array) {
 
        /*
        思路:
        根據數組的特點可以發現,如果從左下角開始查找更爲方便
        左下角的數比同一列的數大,同時比同一行的數小
        也就是從左下角開始比,如果target傳入的數大於它則列數加一繼續比較
        如果小於它則行數減一繼續比較
        */
        //定義行數
        int rows=array.length;
        //定義列數
        int lies=array[0].length;
        //定義i用來技計數
        int i=0;
        //while裏的條件是極限情況,不滿足條件的時候則停止
        while((rows>0)&&(i<lies))
        {
            //目標大於左下角,讓列數自增
            if(target>array[rows-1][i])
            {
                i++;
            //目標小於左下角,讓行數自減
            }else if(target<array[rows-1][i])
            {
                rows--;
            }else
            {
                //除了上述兩種情況就是相等了,說明已經找到了
                return true;
            }
        }
        //遍歷完還沒有找到,說明不存在
        return false;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章