LeetCode有序二維陣列的查詢Swift

2022-06-14 15:39:08 字數 708 閱讀 8022

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

示例:現有矩陣 matrix 如下:

[

[1, 4, 7, 11, 15],[

2, 5, 8, 12, 19],[

3, 6, 9, 16, 22],[

10, 13, 14, 17, 24],[

18, 21, 23, 26, 30

]]

給定 target = 5,返回 true。

給定 target = 20,返回 false。

限制:0 <= n <= 1000

0 <= m <= 1000

思路:取右上角數字與目標值比較,若小於目標值,刪除一行,若大於目標值,刪除一列,若等於目標值,說明找到了

class

solution

var m = matrix.count,n = matrix[0].count,row = 0,column = n - 1

while row < m && column >= 0

else

if current else

if current >target

}return

false

}}

有序二維陣列的查詢

劍指offer原題,陣列從左到右,從上到下遞增,給定乙個數target找出這個數是否在該有序二維陣列裡面。找到的話返true,否則返回false。題目比較簡單就簡單說說思路,利用二維陣列的特性,我們把陣列看做乙個矩陣,從矩陣的右上角元素a i,j 開始找,如果a i,j target,則target...

有序二維陣列中查詢

題目 在乙個n n二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。舉例1 2342 3473 4784 589 找6,false 找5,true 分析 找6,從右上角開始 也可以左下角 右...

常見演算法 有序二維陣列排序

最壞時間複雜度 o mnlog m n 可優化 比較的時候,前面比較過了的,之後的元素不必再比較。但這裡由於使用了 變異的二分查詢,所以實際上全部比較耗時也很少。但這是個優化的點!package main import fmt func main bb int cc int des make int...