劍指Offer(陣列) 二維陣列的查詢

2022-03-19 05:26:02 字數 892 閱讀 2201

(二位陣列的查詢)題目描述:

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

解決辦法一:利用二分查詢的方法

利用 while ( low <= high) 來實現遍歷查詢,和目標值進行比較,若目標值在左邊就 high = mid -1 ,若目標值在右邊就 low = mid + 1。

public class solution else if(array[i][mid] < target)else}}

return false;

}}

解決辦法二:利用自身陣列的特性,自上而下和自左向右是遞增的,

利用左下角的元素進行與目標值的比較,若目標值比它大說明在左下角元素所在列的右邊,若目標值比它小則說明在左下角元素所在行的上一行,這樣子能比較到和目標值相同的元素。

public class solution 

int cols = array[0].length;

if(cols == 0)

int row = rows-1;

int col = 0;

while(row >= 0 && col < cols)else if(array[row][col] > target )else

}return false;

}}

需要注意的是 col < cols , 這一點是必須的,因為若條件裡面判斷通過,但是在邏輯裡面多了col ++ 的話,就會導致陣列越界異常。

劍指offer 二維陣列

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

二維陣列查詢(劍指offer)

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

《劍指offer》二維陣列題

本文完全自己學習記錄,以便將來回顧 未排版 思路 從最後一列的首行開始與number比較 比如上圖中的數字9 若大於該number,則此列可跳過,繼續比較前面一列首行數字,若大於number繼續上一步,若小於,則看此列下一行數字,若找到則true,若此列遇到大於number的數字,還未找到numbe...