劍指Offer 查詢陣列

2021-10-08 14:44:19 字數 1078 閱讀 9047

兩種方法:

第一種比較普遍的遍歷所有,那我們首先就需要確定從陣列的哪個地方開始查詢.比較好的位置就是從四個角開始搜尋.

個人選了從右上角開始,沒啥原因,就是想而已,其他地方也可以,只不過是**的數字改變而已.

public

static boolean find1

(int[

] array ,int target)

int row =0;

int column = array[0]

.length -1;

while

(row < array.length && column >=0)

//比查詢的數大,往前查詢

if(array[row]

[column]

> target)

else

}return

false

;}

第二種方法則是二分法:

[1]二分法查詢適用於資料量較大時,但是資料需要先排好順序(題目中說為遞增函式,滿足)

[2]確定該區間的中間位置k

[3]將查詢的值t與array[k]比較。若相等,查詢成功返回此位置;否則確定新的查詢區域

[4]繼續二分

private

static boolean find2

(int[

] array, int target)

//確定陣列中間數

int left =0;

int right = array.length * array[0]

.length -1;

int col = array[0]

.length;

while

(left <= right)

else

if(value < target)

else

}return

false

;}

關於陣列中間值確定的方法有很多種,我也是查詢了一些大佬們的方法,選了一種能記得下來的方式,至於原理還要再理解一下.不過這個相當於公式,先套用了再說.

劍指offer 陣列查詢

在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。方法一 暴力查詢 不考慮二維陣列的有序性,兩重迴圈直接遍歷。public class solution ret...

劍指offer之陣列查詢

題目 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。完成 coding utf 8 class solution array 二維列表 deffind self,target,ar...

劍指offer 查詢

查詢包含,順序查詢,二分查詢,雜湊表查詢和二叉排序樹查詢。一.二分查詢 題目 旋轉陣列的最小數字 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個非遞減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。思路 重點說一下二分查詢法。如果是...