一、二維陣列的查詢
在乙個二維陣列中(每個一維陣列的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。
思路:從左下角元素往上查詢,右邊元素是比這個元素大,上邊是的元素比這個元素小。於是,target比這個元素小就往上找,比這個元素大就往右找。如果出了邊界,則說明二維陣列中不存在target元素。
# -*- coding:utf-8 -*-
class
solution:
# array 二維列表
deffind
(self, target, array):
rows=len(array)-1
cols=len(array[0])-1
i=rows
j=0while j<=cols and i>=0:
if target1
elif target>array[i][j]:
j+=1
else:
return
true
return
false
class
solution:
# s 源字串
defreplacespace
(self, s):
return s.replace(" ","%20")
三、從尾到頭列印鍊錶
輸入乙個鍊錶,按煉錶值從尾到頭的順序返回乙個arraylist。
遞迴思想:
# -*- coding:utf-8 -*-
# 實現乙個鍊錶類,只有乙個值val和乙個指向下乙個節點的next'指標'
class
listnode:
def__init__
(self, x):
self.val = x
self.next = none
class
solution:
# 返回從尾部到頭部的列表值序列,例如[1,2,3]
defprintlistfromtailtohead
(self, listnode):
# write code here
if listnode is
none:
return
return self.printlistfromtailtohead(listnode.next) + [listnode.val]
棧解法:
1.先遍歷鍊錶元素到棧
2.棧再彈出
# -*- coding:utf-8 -*-
# class listnode:
# def __init__(self, x):
# self.val = x
# self.next = none
class
solution:
# 返回從尾部到頭部的列表值序列,例如[1,2,3]
defprintlistfromtailtohead
(self, listnode):
# write code here
lst,lst_bak = ,
ifnot listnode:
return lst
while listnode:
listnode = listnode.next
while lst:
return lst_bak
劍指offer習題集
1.過載賦值運算子函式 具體見 普通做法 cmystring cmystring operator const cmystring str 更加安全的做法,普通做法在new記憶體不足情況下,已經將原值delete cmystring cmystring operator const cmystrin...
劍指Offer習題
1.二維陣列中的查詢 題目 在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。bool find int target,vector array else re...
劍指Offer習題3 4
思路 一 陣列查詢 折半 二分 查詢 int binsearch int arr,int len,int key else if arr mid key else return mid bool search int arr 4 int key len int newlen len count 2 ...