劍指offer 面試35題

2022-04-22 22:56:44 字數 2471 閱讀 4725

面試35題:

題目:複雜鍊錶的複製

題:輸入乙個複雜鍊錶(每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點),返回結果為複製後複雜鍊錶的head。(注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空)

解題思路一:「python作弊法」

解題**:

#

-*- coding:utf-8 -*-

#class randomlistnode:

#def __init__(self, x):

#self.label = x

#self.next = none

#self.random = none

class

solution:

#返回 randomlistnode

defclone(self, phead):

#write code here

import

copy

return copy.deepcopy(phead)

解題思路二:分解法。詳見劍指offer p188

解題**:

#

-*- coding:utf-8 -*-

#class randomlistnode:

#def __init__(self, x):

#self.label = x

#self.next = none

#self.random = none

class

solution:

#返回 randomlistnode

defclone(self, phead):

#write code here

if phead==none:

return

none

self.clonenodes(phead)

self.connectrandomnodes(phead)

return

self.reconnectnodes(phead)

defclonenodes(self,phead):

'''複製原始鍊錶的每個結點, 將複製的結點鏈結在其原始結點的後面

'''pnode=phead

while

pnode:

pcloned=randomlistnode(0)

pcloned.label=pnode.label

pcloned.next=pnode.next

pnode.next=pcloned

pnode=pcloned.next

defconnectrandomnodes(self,phead):

'''將複製後的鍊錶中的轉殖結點的random指標鏈結到被轉殖結點random指標的後乙個結點

'''pnode=phead

while

pnode:

pcloned=pnode.next

if pnode.random!=none:

pcloned.random=pnode.random.next

pnode=pcloned.next

defreconnectnodes(self,phead):

'''拆分鍊錶:將原始鍊錶的結點組成新的鍊錶, 複製結點組成複製後的鍊錶

'''pnode=phead

pclonedhead=pclonednode=pnode.next

pnode.next =pclonednode.next

pnode=pnode.next

while

pnode:

pclonednode.next=pnode.next

pclonednode=pclonednode.next

pnode.next=pclonednode.next

pnode=pnode.next

return pclonedhead

#

-*- coding:utf-8 -*-

#class randomlistnode:

#def __init__(self, x):

#self.label = x

#self.next = none

#self.random = none

class

solution:

#返回 randomlistnode

defclone(self, phead):

#write code here

if phead==none:

return

none

newnode=randomlistnode(phead.label)

newnode.random=phead.random

newnode.next=self.clone(phead.next)

return newnode

劍指offer面試題35

面試題35 第乙個只出現一次的字元 題目 在字串中找出第乙個只出現一次的字元。如輸入 abaccdeff 則輸入 b 預備知識 什麼是雜湊表?思路 構造乙個簡單的基於陣列的簡單雜湊表 key 字元,value 次數 字元的ascii碼作為字元的下標,統計次數作為陣列值。演算法實現和測試 面試題35....

劍指offer 面試33題

面試33題 題 二叉搜尋樹的後序遍歷序列 題目 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。解題思路 遞迴 解題 coding utf 8 class solution defverifysquenceof...

劍指offer 面試31題

面試31題 題目 棧的壓入 彈出元素 題 輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出...