劍指offer-2(二維陣列中的查詢)
阿新 • • 發佈:2018-12-11
題目:
在一個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函式,輸入這樣的一個二維陣列和一個整數,判斷陣列中是否含有該整數。
思路:
首先呢,我們拿二維陣列最右上角的那個數與要查詢的數進行比較,如果相等,直接返回;如果這個數比要查詢的數大,行號不變,列號減一;如果這個數比要查詢的數小,列號不變,行號加一。
程式碼如下:
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; }
注意程式碼的健壯性,對空或陣列長度的判斷。