1. 程式人生 > >Python實遍歷二維陣列題目一:在一個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函式,輸入這樣的一個二維陣列和一個整數,判斷陣列中是否含有該整數。

Python實遍歷二維陣列題目一:在一個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函式,輸入這樣的一個二維陣列和一個整數,判斷陣列中是否含有該整數。

在準備國網的過程中,仍要刷題,程式設計題。痛並快樂著。

喜歡Python語言,所以用Python進行敲磚頭。

劍指offer

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


class Solution:
    # array 二維列表
    def Find(self, target, array):
        # write code here
        row = 0  
        maxrow = len(array) - 1   
        col = len(array[0]) - 1  
        while col>=0 and row<= maxrow:  
            if array[row][col]  == target:  
                return True  
            elif  target > array[row][col]:  
                row+=1  
            else :  
                target < array[row][col]  
                col-=1  
        return False  

解題思路:首先從行號最小列號最大(右上角)的數開始比較,若目標較小,說明當前遍歷的數較大,則使列號減一,減小當前遍歷的數;若目標較大,說明當前遍歷的數較小,則使行號加一,增大當前遍歷的數。當然,也可以從左下角開始遍歷。