問題描述:
在乙個二維陣列中(每個一維陣列的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。
解題思路:
首先題意所說的二維陣列型別就是如下所示:
[[1,2,8,9]
[2,4,9,12]
[4,7,10,13]
[6,8,11,15]]
第一行從左到右依次遞增,第一列從上往下依次遞減
方法①:暴力法
直接遍歷陣列的每乙個元素,如果找到target就返回true。
class solution:
# array 二維列表
def find(self, target, array):
# write code here
for i in range(len(array)):
for j in range(len(array[0])):
if array[i][j] == target:
return true
return false
s = solution()
print(s.find(7, [[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]))
方法②:從左下角元素進行尋找
左下角元素,即最後一行第一列的元素,該元素是最後一行中最小的,並且也是第一列中最大的。如果該值為target,則直接返回true;如果該值小於target,由於該列中不存在比這個值大的元素,所以向同一行下乙個元素繼續尋找;同理,如果值小於target,那麼向同一列的上乙個元素繼續尋找。
class solution:
# array 二維列表
def find(self, target, array):
# write code here
m = len(array) - 1; n = 0
rows = len(array); cols = len(array[0])
while m >= 0 and n < cols:
if array[m][n] == target:
return true
elif array[m][n] < target:
n += 1
else:
m -= 1
return false
s = solution()
print(s.find(7, [[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]))
JZ1 二維陣列中的查詢
在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。本題給了兩個引數乙個是二維陣列,乙個是尋找的值。那麼只需要遍歷陣列對沒乙個資料進行判斷即可。如果找到返回真,反...
JZ1 二維陣列中的查詢
在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。輸入 7,1,2 8,9 2 4,9 12 4,7 10,13 6 8,11 15 返回值 複雜度分析 思路 ...
1 劍指offer 二維陣列查詢
在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。兩種思路 一種是 把每一行看成有序遞增的陣列,利用二分查詢,通過遍歷每一行得到答案,時間複雜度是nlogn p...