劍指offer 二維陣列的查詢

2022-07-11 05:24:08 字數 885 閱讀 2863

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

2.思路:只看題目本身,可能不是這麼直觀(如果一眼就能得出規律的.....我覺得沒有看下去的必要了....),

首先我們可以自己來乙個符合題目條件的二維陣列,用來尋找規律:

從圖上可以很容易的看出來:在陣列中,無論是哪乙個數,它總是比右邊的數小(或等於),總是比上面的數大。其實題目本身就是想告訴我們這個。

除了上述之外,我們還需要知道: 對於 int a = },得出 a.length = 1 以及 a[0].length = 0 ;  對於 int a = {},得出 a.length = 0 以及 a[0].lenght = 0。這是用來判斷是否有必要查詢。

3.**:

public

boolean find(int target, int

array)

//2.獲取行和列的長度

int rowlen =array.length;

int collen = array[0].length;

//3.開始遍歷查詢,從左下角開始查詢,大於指定的整數:上移,小於指定的整數:下移

for(int i = rowlen-1,j = 0; i >= 0 && j

else

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

else

}//4.最後說明沒有找到

return

false

; }

二維陣列查詢(劍指offer)

在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。解法一 因為每一行都是遞增的,直接對每一行進行二分查詢即可。public class solution if ...

劍指offer 二維陣列的查詢

題目描述 書中第三題 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。public class solution return false 要自己處理輸入的版本 public sta...

劍指Offer 二維陣列的查詢

題目 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。思路 題目給定二維陣列按行遞增,按列遞增。1.錯誤 有一種很自然的想法就是分別按行和列定位,細想一下這是不行的 例如按行定位時,...