劍指offer(一) 二維陣列中的查詢

2021-09-13 23:53:34 字數 750 閱讀 8295

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

該二維陣列是按照每行從左往右自增、每列從上到下遞增的順序排列的。

所以可以考慮先從第一行開始遍歷每一行的第乙個元素,並不斷與target進行比較,停在不小於target的那一行,記為i;

從第i-1行開始,行數遞減地遍歷每一行小於target的每個元素。

在遍歷過程中,如果遇到與target相同的元素,直接結束查詢,返回true。

public

class

solution

return

false;}

}

在幾次編譯過程中都出現了陣列越界的報錯,但是我是增加了陣列邊界檢查的**。經過多次檢查,才發現是&&連線的兩個條件式的順序問題。

條件式1 && 條件式2
如果1為false,則2不執行。

所以應該將邊界檢查放在1,判斷是否相等放在2,才不會造成陣列越界。

要盡可能縮短搜尋的範圍,而且盡可能是範圍是一整塊。

可以考慮從最右一列進行篩選,從第一行開始依次將target跟最右一列的值進行比較,如果target>最右的值,則target肯定不在這一行的範圍內,行數遞增。

直到target<=最右的值,在滿足該條件的行內進行篩選。

劍指offer《一》 二維陣列中的查詢

劍指offer 一 二維陣列中的查詢 劍指offer 一 二維陣列中的查詢 題目描述 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。從上到下,如果最target比最右邊的數都大,從...

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

這個系列是我在牛客網上刷 劍指offer 的刷題筆記,旨在提公升下自己的演算法能力。檢視完整的劍指offer演算法題解析 劍指offer完整習題解析 二維陣列中的查詢 在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸...

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

在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。題目中的陣列大概就是這樣 優點 易於理解 直接遍歷獲取進行比較 不過多講解了直接放 public class ...