牛客題霸NC33合併有序連結串列Java題解
阿新 • • 發佈:2020-11-25
技術標籤:日記
劍指Offer JZ1:
提示:以下是本篇文章正文內容,下面案例可供參考
一、題目:
題目描述
在一個二維陣列中(每個一維陣列的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函式,輸入這樣的一個二維陣列和一個整數,判斷陣列中是否含有該整數。
輸入
7,[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]
返回值
true
二、思路:
1.首先排序空陣列問題,如果輸入為空陣列,直接返回False
2.因為二維陣列的數字是有序排列的,[0][0]位置的數字最小,陣列最後一個位置的數子最大,如果輸入數字小於最小值,或者大於最大值,直接返回False
3.迴圈整個陣列,一一對比,如果存在返回True,沒有返回False
三、時間複雜度:
因為需要便利二維陣列,需要兩層for迴圈,所以時間複雜度為
程式碼如下(示例):
# -*- coding:utf-8 -*- class Solution: # array 二維列表 def Find(self, target, array): # write code here h = len(array) l = len(array[0]) if array == [[]]: return False if target < array[0][0] | target > array[h-1][l-1] : return False for i in range(h): for j in range(l): if target == array[i][j]: return True return False
學習:
通過此程式碼:學習內容:
1.如何獲取二維陣列的行列數(二維陣列array):
獲取二維陣列的行數= len(array)
獲取二維陣列的列數=len(array[0])