面試題3 二維陣列的查詢

2021-08-02 14:36:04 字數 1005 閱讀 3501

一種思路是:

利用二維陣列由上到下,由左到右遞增的規律,

那麼選取右上角或者左下角的元素a[row][col]與target進行比較,

當target小於元素a[row][col]時,那麼target必定在元素a所在行的左邊,

即col--;

當target大於元素a[row][col]時,那麼target必定在元素a所在列的下邊,

即row++;

public class solution 

else if(array[i][j]>target)

else

} return false;

}

注: num.length是num陣列的長度

num[i].length是num陣列中包含陣列的長度。

你可以不要把它看成二維陣列,直接看成 陣列的陣列 !

那便可理解,num.length是二維陣列中的主陣列的長度,num[i].length是其中分陣列的長度

[1 , 2 , 3

4  ,   5  ,   7]

例如上面,主陣列大小是num.length = 2.

分陣列大小(i == 0)是num[i].length = 3 當i=0表示第一排陣列的大小,這個就為3;

一種是:

把每一行看成有序遞增的陣列,

利用二分查詢,

通過遍歷每一行得到答案,

時間複雜度是nlogn

public class solution 

}returnfalse;

}}

面試題3 二維陣列中的查詢

題目描述 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。輸入 輸入可能包含多個測試樣例,對於每個測試案例,輸入的第一行為兩個整數m和n 1 m,n 1000 代表將要輸入的矩陣的行...

面試題3 二維陣列中的查詢

題目描述 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。輸入 輸入可能包含多個測試樣例,對於每個測試案例,輸入的第一行為兩個整數m和n 1 m,n 1000 代表將要輸入的矩陣的行...

面試題3 二維陣列中的查詢

題目 在二維陣列中,每行 每列的數字遞增,判斷乙個數字是否存在 分析 從二維陣列的右上角開始查詢,若找到,則停止 若比該數字大,則放棄該列 若比該數字小,則放棄該行。如下 include stdafx.h define maxn 100 bool find int matrix,int n,int ...