1. 程式人生 > >劍指offer第一題--二維陣列中的查詢

劍指offer第一題--二維陣列中的查詢

題目描述

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

思路

最小值為左上方值,最大值在右下方,從左下方開始,小於目標值則向右,大於目標值向上

程式碼

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

結果

執行時間:293ms

佔用記憶體:5624k