1. 程式人生 > 其它 >python 二維陣列的賦值_Python: 面試題4 二維陣列中的查詢

python 二維陣列的賦值_Python: 面試題4 二維陣列中的查詢

技術標籤:python 二維陣列的賦值

fe2a382d19ced47f3c741724d0bfd71b.png

題目

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

Leetcode:

力扣​leetcode-cn.com

方法1:遍歷

從左到右,從上到下進行遍歷,時間複雜度為O(N*M),空間複雜度為O(1)

程式碼略(這麼寫的話面試大概率過不了吧)

方法2:從左上角或右下角進行遍歷, 時間複雜度為O(max(N,M)),空間複雜度為O(1)

class Solution:
    def findNumberIn2DArray(self, matrix: List[List[int]], target: int) -> bool:
        if not matrix:
            return False
        N = len(matrix)
        M = len(matrix[0])
        n = N-1
        m = 0
        while n>=0 and m<M:
            if matrix[n][m]==target:
                return True
            elif matrix[n][m]>target:
                n -=1
            else:
                m +=1
        return False

ps.本人即將找工作的菜雞,歡迎批評指導!