劍指offer Python3版 五

2021-10-09 02:29:26 字數 2483 閱讀 4666

q:輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有的奇數字於陣列的前半部分,所有的偶數字於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。

你要是這樣寫

class

solution

:def

reorderarray

(self, list1)

: evenlist, oddlist =

,[]for item in list1:

if item %2==

0return oddlist + evenlist

if __name__ ==

'__main__'

: s = solution(

) l =

list

(eval

(input

('輸入陣列:'))

)print

(s.reorderarray(l)

)

這個應該是正常的邏輯,但我們盡量不要這麼寫,因為這邊涉及到時間空間複雜度的大小問題。

你用插值排序演算法的話空間複雜度就只有o(1)

class

solution

:def

reorderarray

(self, list1)

:if list1 ==

none

:return

'空'for i in

range

(len

(list1)):

j = i

if list1[j]%2

==1:if j ==0:

pass

else

:while list1[j -1]

%2==0

: list1[j -1]

, list1[j]

= list1[j]

, list1[j -1]

j -=

1return list1

if __name__ ==

'__main__'

: s = solution(

) ll =

list

(eval

(input

('輸入陣列:'))

)print

(s.reorderarray(ll)

)

q:輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。

思路

設2個指標,p1,p2,p2先走k-1步,然後p1開始和p2一起動,p2走到最後時,p1所在位置就是倒數第k個結點

class

solution

:def

findk

(self, head, k)

:if head ==

none

or k <=0:

return

none

p2 = head

p1 = head

while k >1:

if p2.

next

!=none

: p2 = p2.

next

k -=

1else

:return

none

while p2.

next

!=none

: p1 = p1.

next

p2 = p2.

next

return p1

q:輸入乙個鍊錶,反轉鍊錶後,輸出新鍊錶的表頭

思路

1->2->3->4->5

設1->none,2->1,…5->4,得到反轉鍊錶。

def

rerverselist

(self, phead)

:if phead ==

none

or phead.

next

==none

:return phead

pre =

none

cur = phead

while cur != pre:

tmp = cur.

next

cur.

next

= pre

pre = cur

cur = tmp

return pre

tmp = cur.

next

cur.

next

= pre

pre = cur

cur = tmp

return pre

劍指offer Python3版 九

q 請實現 copyrandomlist 函式,複製乙個複雜鍊錶。在複雜鍊錶中,每個節點除了有乙個 next 指標指向下乙個節點,還有乙個 random 指標指向鍊錶中的任意節點或者 null 思路 複製鍊錶 cur a b c cloned a b c 複製的鍊錶依次加到原煉表後 a a b b ...

劍指offer Python3實現

使用python3編寫 劍指offer 所有演算法,在參考牛客網,劍指offer書本以及其他前輩所寫的程式的同時,也加入了自己的解題思路,力爭用簡單的語言描述清楚。所有的程式均已上傳到github,之後將持續整理更新,題目的順序與牛客網基本一致。原始碼位址 試題 3 二維陣列中的查詢 試題 4 替換...

劍指offer Python版 替換空格

問題1 替換字串,是在原來的字串上做替換,還是可以重新定義乙個字串做替換 問題2 從前往後替換和從後往前替換一樣嗎?從左往右遍歷元素,若當前元素為空格,則插入 20 並將字串長度增加3.時間複雜度o n n coding utf 8 class solution s 源字串 def replaces...