1. 程式人生 > 實用技巧 >《劍指offer》4:二維陣列查詢

《劍指offer》4:二維陣列查詢

一.題目描述

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

二.題目解析

首先這個題目我們需要弄清楚題目的題意就很簡單了,題目的意思不是讓我們自己編寫一個這樣的二維陣列,而是已經給定了我們這樣的一個二維陣列,和一個數值,讓我們去查詢這樣的一個數值會不會出現在這個二維陣列當中,那麼二維陣列是長什麼樣的呢?在Python當中使用了兩層列表進行了巢狀,如下所示:
[[1,2,3],

[4,5,6],

[7,8,9]]

而題目當中所描述的陣列我們可以給出一個簡單的例子,如下:


[[1,2,3],

[2,3,4],

[3,4,5]]

這樣就可以保證在陣列當中既能夠從左向右遞增,也可以從上到下遞增了。

這裡給出解法。

解法:

使用迴圈遍歷二維陣列當中的每一個值,檢視是否有目標數值,有則返回True,沒有則什麼都不做。程式碼如下:

# -*- coding:utf-8 -*-
class Solution:
    # array 二維列表
    def Find(self, target, array):
        # write code here
        i=0
        while i<len(array):
            j
=0 while j <len(array[i]): if target==array[i][j]: return True j+=1 i+=1

最後通過的時間和記憶體佔用如下:

非常簡單,算是劍指offer裡面最簡單的題目了。