劍指offer習題集

2021-08-21 15:39:27 字數 1818 閱讀 1383

一、二維陣列的查詢

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

思路:從左下角元素往上查詢,右邊元素是比這個元素大,上邊是的元素比這個元素小。於是,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 ...