二維數組

1.在一個二維數組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。

請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否有該整數。

(1)如何判斷

    已知數組從左到右遞增,從上到下遞增。故選取右上角的整數與目標整數進行比較,若大於則刪除列,小於刪除行,一致則返回。

(2)如何確定右上角整數位置

       一個二維數組 行數 rows = array.length

                            列數 cols = array[1].length

    右上角位置是第一行最後一列,所以row = 0;col = cols-1

(3)刪除行、列,繼續鎖定右上角位置直至結束

刪除行 row++

刪除列 col--

public class test1{
    public static boolean find(int[][] array, int n) {

        if (array == null || array.length < 1 || array[0].length < 1) {
            return false;
        }

        int rows = array.length; 
        int cols = array[1].length; 

        int row = 0; 
        int col = cols - 1; 

        while (row >= 0 && row < rows && col >= 0 && col < cols) {
            if (array[row][col] == n) {
                return true;
            } 
            else if (array[row][col] > n) 
                col--; 
             else 
                row++; 
        }
        return false;
    }

    public static void main(String[] args) {
        int[][] array = {{1, 2, 3, 4},{5,6,7,8}};
        System.out.println(find(array, 2)); 
    }
}
結果輸出   true
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章