劍指offer——二維陣列中的查詢(JAVA)
阿新 • • 發佈:2019-01-03
題目描述
在一個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函式,輸入這樣的一個二維陣列和一個整數,判斷陣列中是否含有該整數。
解題思路
利用二維陣列從上到下、從左到右依次遞增的規律,可以首先選取一個特殊位置(左下角或右上角)的元素與目標整數進行比較,以左下角元素為例:
當目標整數target=a[row][col]時,說明target只可能出現在當前元素所在行的上方,即row--;
當目標整數target>a[row][col]時,說明target只可能出現在當前元素所在列的右邊,即col++;
若越出邊界,則說明二維陣列中不含有該整數。
程式碼:
public class Solution { public boolean Find(int target, int [][] array) { boolean found = false; int row = array.length-1; int column=0; while(column<array[0].length&&row>=0){ if(array[row][column]==target) { found=true; break; } else if(array[row][column]>target){ row--; } else{ column++; } } return found; } }