劍指offer系列 1 從二維陣列查詢某個數

2021-10-09 11:41:37 字數 1334 閱讀 7352

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

1、針對每一行進行二分查詢

public

boolean

find

(int target,

int[

] array)

int row =array.length;

int col = array[0]

.length;

// 邊界判斷

if(target[0

]||target>array[row-1]

[col-1]

)for

(int i=

0;ireturn

false;}

/** * 二分查詢的實現套路

* --整體思路:不斷縮小查詢範圍,查詢範圍對半砍。

* --while迴圈:因為不知道什麼時候能找到,所以用while迴圈

* --while迴圈的邊界條件

* --<:等s==e時,跳出迴圈,需要在迴圈外再比較一次

* --<=:當s==e時,在迴圈內判斷。

* --所以《或者<=都行。

* --s,e的更新

* --以target為中心

* --target在前部,更新e

* --target在後部,更新s

*/public

boolean

erfen

(int

array,

int target)

if(array[mid]

else

}return

false

;}

2、從左下角(或右上角)開始,向上變小,向右變大
public

static

booleanf1(

int[

] array,

int target)

int row =array.length;

int col = array[0]

.length;

if(target[0

]||target>array[row-1]

[col-1]

)int i=row-

1,j=0;

while

(i>=

0&&j<=col-1)

if(array[i]

[j]else

}return

false

;}

1 劍指offer 二維陣列查詢

在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。兩種思路 一種是 把每一行看成有序遞增的陣列,利用二分查詢,通過遍歷每一行得到答案,時間複雜度是nlogn p...

劍指offer 二維陣列查詢 1

在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。示例 輸入 7,1,2,8,9 2,4,9,12 4,7,10,13 6,8,11,15 返回值 truec ...

劍指offer 二維陣列

題目 在乙個二維陣列中每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。完成乙個函式,輸入這樣的陣列和乙個整數,判斷陣列中是否含有該整數。思路 由於該二維陣列從左到右,從上到下均為順序遞增的。因此右下角與左上角的數字均大於或小於其周圍數字,如果選擇改組作為起始點,則無法確定下一...