【4. 二維數組中的查找】劍指offer-JAVA實現

給定一個二維數組,其每一行從左到右遞增排序,從上到下也是遞增排序。給定一個數,判斷這個數是否在該二維數組中。要求時間複雜度 O(M + N),空間複雜度 O(1)。其中 M 爲行數,N 爲 列數。數組

思路:當被查找數大於二維數組中a時,他可能出現的位置在這個a的右方或下方,但可能出現重疊會很是複雜。因此從角落開始查找。這樣能夠直接去掉行或列spa

代碼code

public boolean search(int [][]a,int m,int n,int key) { //m是行n是列
             if(a==null||a.length==0||a[0].length==0) return false;
         int i=0;  //行
         int j=n-1;  //列
         while(i<=m-1&&j>=0) {
             if(a[i][j]==key) return true;
             else if(a[i][j]>key) {
                 j--;
             }else {
                 i++;
             }
         }
         return false;
         
    }

出現問題:邊界條件沒寫 if(a==null||a.length==0||a[0].length==0) return false;blog

相關文章
相關標籤/搜索