python實(shí)現(xiàn)反轉(zhuǎn)部分單向鏈表
題目:
給定一個(gè)單鏈表的頭指針 head, 以及兩個(gè)整數(shù) a 和 b,在單鏈表中反轉(zhuǎn) linked_list[a-b] 的結(jié)點(diǎn),然后返回整個(gè)鏈表的頭指針。
例如:
單鏈表[1000, 5, 12, 100, 45, ‘cecil', 999],
a = 4, b = 6,
返回的鏈表是[1000, 5, 12, 100, 999, ‘cecil', 45],也就是說(shuō),
a 和 b分別為索引值。如果a 和 b 超過(guò)了索引范圍就返回錯(cuò)誤。
代碼:
我寫(xiě)的不夠簡(jiǎn)潔,比較繁瑣,但是能跑通,繁瑣的原因在于我使用了 for 循環(huán),對(duì)于 a == 0 的情況 for 循環(huán)無(wú)法識(shí)別。
def reverse_part_linked_list(head, a, b): # 反轉(zhuǎn)部分鏈表結(jié)點(diǎn),a, b分別為索引值
if head == 0:
print "Empty linked list. No need to reverse."
return head
p = head
length = 1
while p != 0:
length += 1
p = p.next
if length == 1:
print "No need to reverse."
return head
if a < 0 or b > length-1 or a >= b:
raise Exception("The given 'from' value and 'to' value is wrong.")
p = head
if a == 0: # 由于 for 循環(huán)中 xrange 的范圍問(wèn)題,我就分情況寫(xiě)了。
tail, head = p, p
pre = 0
for _ in xrange(a, b+1):
p = p.next
head.next = pre
pre = head
head = p
tail.next = p
return head
else:
for _ in xrange(1, a):
p = p.next
front, tail, head = p, p, p
p = p.next
pre = 0
for _ in xrange(a+1, b+2):
p = p.next
head.next = pre
pre = head
head = p
front.next = pre
tail.next = p
return head
分析:
核心依然是反轉(zhuǎn)鏈表的指針問(wèn)題,均是一遍循環(huán),時(shí)間復(fù)雜度o(n),空間復(fù)雜度為若干個(gè)變量。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
pytorch中常用的損失函數(shù)用法說(shuō)明
這篇文章主要介紹了pytorch中常用的損失函數(shù)用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05
使用jupyter notebook輸出顯示不完全的問(wèn)題及解決
這篇文章主要介紹了使用jupyter notebook輸出顯示不完全的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02
詳解Python設(shè)計(jì)模式編程中觀(guān)察者模式與策略模式的運(yùn)用
這篇文章主要介紹了Python設(shè)計(jì)模式編程中觀(guān)察者模式與策略模式的運(yùn)用,觀(guān)察者模式和策略模式都可以歸類(lèi)為結(jié)構(gòu)型的設(shè)計(jì)模式,需要的朋友可以參考下2016-03-03
AI生成圖片Stable?Diffusion環(huán)境搭建與運(yùn)行方法
Stable?Diffusion是一種基于擴(kuò)散過(guò)程的生成模型,由Ge?et?al.在2021年提出,該模型利用了隨機(jī)變量的穩(wěn)定分布,通過(guò)遞歸地應(yīng)用擴(kuò)散過(guò)程來(lái)生成高質(zhì)量的圖像,這篇文章主要介紹了AI圖片生成Stable?Diffusion環(huán)境搭建與運(yùn)行,需要的朋友可以參考下2023-05-05
在paddle中安裝python-bidi出錯(cuò)問(wèn)題及解決
在Paddle中安裝python-bidi時(shí)遇到Rust和Cargo缺失的問(wèn)題,通過(guò)安裝舊版本的python-bidi(0.4.0)解決了問(wèn)題2025-02-02
Python裝飾器使用示例及實(shí)際應(yīng)用例子
這篇文章主要介紹了Python裝飾器使用示例及實(shí)際應(yīng)用例子,本文給出了斐波拉契數(shù)列、注冊(cè)回調(diào)函數(shù)、mysql封裝、線(xiàn)程異步等實(shí)際使用示例,需要的朋友可以參考下2015-03-03

