劍指offer 二維陣列中的查詢

2021-10-22 17:26:34 字數 755 閱讀 6679

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

輸入

7,[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]

返回值true

這道題首先想到的肯定是暴力搜尋,兩層for迴圈,這樣當然能夠實現,而且這道題的空間限制和時間限制也夠用。但是因為是演算法題,我們需要考慮一下時間、空間複雜度。如果用兩層for迴圈遍歷查詢,時間複雜度為o(m*n)

把二維陣列的每一行看成是一維陣列,然後進行二分查詢。二分查詢的時間複雜度是

public class solution 

}return false;}}

利用二維陣列從左至右、從上至下都是遞增的特點,可以將target與二維陣列的左下角或者右上角進行比較,我是與右上角進行比較。

如果target < a[row][col],說明target一定在a[row][col]的左側,所以col--;

如果target > a[row][col],說明target一定在a[row][col]的下側,所以row++

時間複雜度為o(n+m)

public class solution  else 

}return false;}}

劍指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 思路有三種,...