1題目:在一個二維數組中(每個一維數組的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。 2思路:首先選取數組中右上角的數字。如果該數字等於要查找的數字,查找過程結束;如果該數字大於要查找 ...
1題目:在一個二維數組中(每個一維數組的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。
2思路:首先選取數組中右上角的數字。如果該數字等於要查找的數字,查找過程結束;如果該數字大於要查找的數組,剔除這個數字所在的列;如果該數字小於要查找的數字,剔除這個數字所在的行。也就是說如果要查找的數字不在數組的右上角,則每一次都在數組的查找範圍中剔除一行或者一列,這樣每一步都可以縮小查找的範圍,直到找到要查找的數字,或者查找範圍為空。
3代碼:
1 # -*- coding:utf-8 -*- 2 class Solution: 3 # array 二維列表 4 def Find(self, target, array): 5 # write code here 6 rows = len(array) 7 cols = len(array[0]) 8 9 if rows > 0 and cols > 0: 10 row = 0 11 col = cols - 1 12 while row < rows and col >= 0: 13 if target == array[row][col]: 14 return True 15 elif target < array[row][col]: 16 col -= 1 17 else: 18 row += 1 19 return False
4 牛客網刷題平臺:https://www.nowcoder.com/ta/coding-interviews