輸入乙個複雜鍊錶(每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點),返回結果為複製後複雜鍊錶的head。(注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空)
# -*- coding:utf-8 -*-
# class randomlistnode:
# def __init__(self, x):
# self.label = x
# self.next = none
# self.random = none
import copy
class
solution
:# 返回 randomlistnode
defclone
(self, phead)
:# write code here
ret=copy.deepcopy(phead)
#深拷貝
return ret
# -*- 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
ifnot phead:
return
none
#複製乙個一樣的node,並且新增到之前的鍊錶的每乙個node後面
ptmp=phead#令ptmp指向原始鍊錶的表頭
while ptmp:
node=randomlistnode(ptmp.label)
#建立node為乙個複雜鍊錶
node.
next
=ptmp.
next
#令node的next指標指向ptmp的next指標指向的值,此時ptmp的next指標為空
ptmp.
next
=node#令ptmp的next指標指向node
ptmp=node.
next
#令ptmp指向node的next指標指向的值,即原始鍊錶的第二個值
#實現新建的node的random的指向
ptmp=phead
while ptmp:
if ptmp.random:
ptmp.
next
.random=ptmp.random.
next
ptmp=ptmp.
next
.next
#斷開原來的node和新的node之間連線
ptmp=phead
newhead=phead.
next
pnewtmp=phead.
next
while ptmp:
ptmp.
next
=ptmp.
next
.next
if pnewtmp.
next
: pnewtmp.
next
=pnewtmp.
next
.next
pnewtmp=pnewtmp.
next
ptmp=ptmp.
next
return newhead
牛客66道程式設計題 替換空格
class solution s 源字串 defreplacespace self,s write code here return s.replace 20 class solution s 源字串 defreplacespace self,s write code here s list s 把...
牛客66道程式設計題 跳台階
乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法 先後次序不同算不同的結果 當只有1個台階時,只有一種跳法,那就是1。當有2個台階時,則有兩種跳法,分別是1 1和2。當有3個台階時,則有3種跳法,分別是1 1 1,1 2和2 1。當有4個台階時,則有5種跳法,...
牛客網 複雜鍊錶的複製
題目描述 輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判斷程式會直接返回空 思路 分為三個步驟 1 根據原始鍊錶中的節點建立新的節點,然後將新的節點連線在對...