牛客66道程式設計題 複雜鍊錶的複製

2021-10-01 02:16:19 字數 1907 閱讀 9387

輸入乙個複雜鍊錶(每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點),返回結果為複製後複雜鍊錶的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 根據原始鍊錶中的節點建立新的節點,然後將新的節點連線在對...