1. 程式人生 > >劍指offer-2(二維陣列中的查詢)

劍指offer-2(二維陣列中的查詢)

題目:

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

思路:

首先呢,我們拿二維陣列最右上角的那個數與要查詢的數進行比較,如果相等,直接返回;如果這個數比要查詢的數大,行號不變,列號減一;如果這個數比要查詢的數小,列號不變,行號加一。

 

程式碼如下:

 

public static boolean select(int[][] arr, int num) {
        if (arr == null || arr.length < 1 || arr[0].length < 1) {
            
return false; } int rows = arr.length;// 陣列的行數 int cols = arr[0].length;// 陣列的列數 // 右上角數的行和列 int row = 0; int col = cols - 1; while (row < rows && col >= 0) { if (arr[row][col] == num) { return true; }
else if (arr[row][col] > num) { col--; } else { row++; } } return false; }

 

 

注意程式碼的健壯性,對空或陣列長度的判斷。