題目:
在乙個二維陣列中(每個一維陣列的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。
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上的一道題,書上應該有解題思路啥的。題目重述 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,...
二維陣列查詢
題目描述 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請 完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。解題思路 按照一般搜尋二維陣列的方法,從左到右,從上到下,比較難根據這個陣列的特點進行快速搜尋。可以從 右到左,從上到下,...