劍指offer 二維陣列中的查詢

2022-05-15 05:03:39 字數 1394 閱讀 1568

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

時間限制:1秒 空間限制:32768k 熱度指數:29783

我的方法:從陣列每行第乙個元素開始判斷是否小於或等於目標值,若是就遍歷該行

難點備註:二維陣列判斷的條件

1

public

class

solution 910

for(int i=0;!flag&i)16}

17}18}

1920

return

flag; 21}

22 }

優秀解法:

/* 思路矩陣是有序的,從左下角來看,向上數字遞減,向右數字遞增,因此從左下角開始查詢,當要查詢數字比左下角數字大時。右移 要查詢數字比左下角數字小時,上移*/
www.nowcoder.com/questionterminal/abc3fe2ce8e146608e868a70efebf62e23

4class

solution

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

2024}25

return

false;26

}27 };

兩種思路

一種是:

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

利用二分查詢,

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

時間複雜度是nlogn

1

public

class

solution 16}

17return

false;18

19}20 }

另外一種思路是:

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

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

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

即col--;

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

即row++;

1

public

class

solution

13return

false;14

15}16 }

劍指offer 二維陣列中查詢

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

劍指offer 二維陣列中查詢

從今天開始每天一題,除了節假日。在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。class solution return false class solut...

劍指offer 二維陣列中查詢

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