查詢 陣列 二維列表查詢

2021-10-07 02:12:49 字數 3060 閱讀 3020

題目:

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

a、使用內值函式 for target in array[i],逐行遍歷

# -*- coding:utf-8 -*-

class

solution

:# array 二維列表

deffind

(self, target, array)

:# write code here

t='true'

f='false'

for i in

range

(len

(array)):

if target in array[i]

:return t

return f

while

true

:try

: sin=

list

(eval

(raw_input()

))s=solution(

)#print(sin)

target=sin[0]

array=sin[1]

print

(s.find(target,array)

)except

:break

b、如果不使用 if target in array[i],思路有兩條:

思路1、利用二維列表的大小順序,從左下(右上)角開使逐行判斷,若比左下角的數大,則向上移動一行再進行判斷;若比左下角資料小,則向右移動,進行判斷,有相等值則返回1,判斷出更大的值則返回0 ,判斷完一行,返回0

思路2:、逐行遍歷,行內二分法查詢

注意,在用python時,無法直接獲取到二維列表的 維度,需要轉換為矩陣,np.array(list_).shape()

思路1 **
(m,n)

=np.array(array)

.shape(

)print

(m,n)

i=0for j in

range(0

,m):

if array[m-j,0]

==target:

return

1elif array[m-j,0]

for i in

range(0

,n):

if array[m-j,i]

==target:

return

1elif array[m-j,i]

>target:

return

0

# -*- coding:utf-8 -*-

class

solution

:# array 二維列表

deffind

(self, target, array)

:# write code here

t='true'

f='false'

m=len(array)

n=len(array[0]

)for i in

range

(m):

for j in

range

(n):

if array[m-i-1]

[j]>target:

break

elif array[m-i-1]

[j]if j==

(n-1):

return f

else

:continue

elif array[m-i-1]

[j]==target:

return t

return f

while

true

:try

: sin=

list

(eval

(raw_input()

))s=solution(

)#print(sin)

target=sin[0]

array=sin[1]

print

(s.find(target,array)

)except

:break

思路2 **

```python

# -*- coding:utf-8 -*-

class

solution

:# array 二維列表

deffind

(self, target, array)

:# write code here

t='true'

f='false'

for i in

range

(len

(array)):

#逐行遍歷

l=0 h=

len(array[0]

)-1#列數

while l<=h:

mid=

(l+h)/2

if array[i]

[mid]

l=mid+

1elif array[i]

[mid]

>target :

h=mid-

1else

:return t

return f

while

true

:try

: sin=

list

(eval

(raw_input()

))s=solution(

)#print(sin)

target=sin[0]

array=sin[1]

print

(s.find(target,array)

)except

:break

二維陣列查詢

近日微博上看到乙個題目,二維陣列查詢 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。例如下面的二維陣列就是每行 每列都遞增排序。如果在這個陣列中查詢數字7,則返回true 如果查詢...

二維陣列查詢

天氣變化大,生病折騰了1個禮拜,寫篇部落格壓壓驚。題目源自於清明假期前夕舍友春招的筆試題,後來得知是劍指offer上的一道題,書上應該有解題思路啥的。題目重述 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,...

二維陣列查詢

題目描述 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請 完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。解題思路 按照一般搜尋二維陣列的方法,從左到右,從上到下,比較難根據這個陣列的特點進行快速搜尋。可以從 右到左,從上到下,...