題目:在一個二維數組中(每一個一維數組的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。python
思路:數組
首先選取數組中右上角的數字。若是該數字等於要查找的數字,查找過程結束;若是該數字大於要查找的數組,剔除這個數字所在的列;若是該數字小於要查找的數字,剔除這個數字所在的行。也就是說若是要查找的數字不在數組的右上角,則每一次都在數組的查找範圍中剔除一行或者一列,這樣每一步均可以縮小查找的範圍,直到找到要查找的數字,或者查找範圍爲空。函數
舉例:spa
若是在一個二維數組中找到數字7,存在則返回True,若是沒找到則返回False。code
首先,8大於7,下一次只須要在8的左邊區域查找;而後,5小於7,下一次只須要在5的下方區域查找;按照這種規則進行查找,若是查找到相同的,則返回True,不然返回False。blog
Python實現:排序
# -*- python3.6.6 -*- # -*- JluTiger -*- class Solution: # array 二維列表 def Find(self, target, array): # write code here rows = len(array) cols = len(array[0]) if rows >0 and cols >0: row = 0 col = cols-1 while row<rows and col>=0: if target == array[row][col]: return True elif target <array[row][col]: col -=1 else: row += 1 return False if __name__ =='__main__': target = 15 array = [[1,2,3],[4,5,6],[7,8,9],[10,12,13]] answer = Solution() print(answer.Find(target,array))