二維數組中的查找[by Python]

題目:在一個二維數組中(每一個一維數組的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。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))
相關文章
相關標籤/搜索