AcWing 15 二維陣列中的查詢

2021-09-13 03:11:55 字數 1678 閱讀 4243

在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。

請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。

輸入陣列:

[[1,2,8,9],

[2,4,9,12],

[4,7,10,13],

[6,8,11,15]

]

如果輸入查詢數值為7,則返回true,

如果輸入查詢數值為5,則返回false。

(掃瞄法)  o(m+n)

主要就是發現這個二維陣列的規律:每行中最右側數最大,每列中最下側數最大。

從最右上方開始進行掃瞄,

若當前值array[i][j]正好等於target,返回true

否則若當前值array[i][j]小於target,則說明當前位置正左側的數都小於target,行號i加1;

否則若當前值array[i][j]大於target,則說明當前位置正下側的數都大於target,列號j減1。

直至遍歷到最左下方仍沒有找到與target相同的值,返回false

時間複雜度分析:最差的情況是二維陣列(m*n)中沒有要找的值,走了m+n步,時間複雜度o(m+n)。

c **

bool searcharray(int** array, int arrayrowsize, int arraycolsize, int target)

return false;

}

#### python3 **

class solution(object):

def searcharray(self, array, target):

""":type array: list[list[int]]

:type target: int

:rtype: bool

"""# 如果陣列為空

if not array or not array[0]: return false

# 獲取二維陣列的行數和列數

rowlen, collen = len(array), len(array[0])

# 0賦給i,collen-1賦給j

i, j = 0, collen - 1

while i < rowlen and j >= 0:

if array[i][j] == target:

return true

elif array[i][j] < target:

i += 1

else:

j -= 1

return false

每日一練 二維陣列中的查

內容 在乙個二維陣列中,每一行都按照從左往右遞增的順序排列,每一列都按照從上到下遞增的順序排列。請完成乙個函式,輸入這樣的乙個二維陣列,判斷是否含有該整數。解題思路 首先選取陣列中右上角的數字,如果該數字等於要查詢的數字,則查詢結束 如果該數字大於要查詢的數字,則剔除這個數字所在的列 如果該數字小於...

二維陣列及二維陣列的遍歷

一 如果陣列的元素是一維陣列 則該陣列是二維陣列 如果陣列的元素是二維陣列 則該陣列是三維陣列 注意 二維陣列的長度 是陣列內一維陣列的個數 獲取二維陣列內的元素 第一步獲取該元素在哪乙個一維陣列內 第二步獲取該元素在一維陣列的那個位置 false var arr 1,2,3 var arr1 你好...

二維陣列中的查詢 陣列

題目描述 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。思想 因為有序,所以二分查詢。從上到下,從左到右,都是遞增。但是把二維變成一維之後就不是遞增的了 行進行二分查詢,確定在哪一...