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

劍指offer——二維陣列中的查詢(JAVA)

題目描述

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

解題思路

利用二維陣列從上到下、從左到右依次遞增的規律,可以首先選取一個特殊位置(左下角右上角)的元素與目標整數進行比較,以左下角元素為例:

當目標整數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;
    }
}