亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python 數(shù)據(jù)結(jié)構(gòu)之旋轉(zhuǎn)鏈表

 更新時間:2017年02月25日 08:57:05   作者:guoziqing506  
這篇文章主要介紹了Python 數(shù)據(jù)結(jié)構(gòu)之旋轉(zhuǎn)鏈表的相關(guān)資料,需要的朋友可以參考下

題目描述:給定一個鏈表,旋轉(zhuǎn)鏈表,使得每個節(jié)點向右移動k個位置,其中k是一個非負(fù)數(shù)

樣例:給出鏈表1->2->3->4->5->null和k=2;返回4->5->1->2->3->null

首先,觀察一下這個題目要達(dá)到的目的,其實,換一種說法,可以這樣來描述:給出一個k值,將鏈表從倒數(shù)第k個節(jié)點處起之后的部分移動到鏈表前面,就樣例來說,其實是將4->5這一部分移動到整個鏈表前面,變成4->5->1->2->3->null。不過,需要注意的是,題中沒有給出k的大小,當(dāng)k比鏈表的長度還大的時候,我們就需要先用k對鏈表的長度求余,比如,如果k = 7,那么上面的例子還是將4->5移動到整個鏈表前面。

所以說,這個題的思路可以這樣來總結(jié):

1. 先求出整個鏈表的長度
2. 根據(jù)k值找到需要移動的部分鏈表的前驅(qū)(樣例中的3)
3. 在前驅(qū)之后將鏈表斷開,移動后半部分

代碼如下:

# Definition for singly-linked list. 
# class ListNode: 
#   def __init__(self, x): 
#     self.val = x 
#     self.next = None 
 
class Solution: 
  # @param head: the list 
  # @param k: rotate to the right k places 
  # @return: the list after rotation 
  def rotateRight(self, head, k): 
    if head is None: 
      return head 
    cur = head 
    count = 1 
    # 計算鏈表長度 
    while cur.next: 
      cur = cur.next 
      count += 1 
    # 為節(jié)省代碼量,這里是一個很有技巧的處理:用尾節(jié)點鏈接頭結(jié)點 
    cur.next = head 
    # 此處,k為cur從尾節(jié)點到要斷開部分的前驅(qū)需走的步數(shù) 
    k = count - k % count 
    # 找到前驅(qū) 
    while k != 0: 
      cur = cur.next 
      k -= 1 
    # 斷開 
    head = cur.next 
    cur.next = None 
    # 因為首尾已經(jīng)相連,所以直接返回前驅(qū)后面的那個節(jié)點即可,此處引用為head 
    return head 
    # write your code here 

需要注意的是21行首尾相連的技巧,這大大節(jié)省了我們的代碼量,其實,就按之前思路中所描述的一步步來,也沒問題。但是這個技巧確實很棒,值得學(xué)習(xí)。具體的細(xì)節(jié)我寫在了代碼注釋里。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • python namedtuple函數(shù)的使用

    python namedtuple函數(shù)的使用

    今天介紹collections里面的一個好用的小函數(shù): namedtuple函數(shù)(不創(chuàng)類而可以擁有類的便利),例如可以使用object.attribute
    2021-06-06
  • Python集合set()使用的方法詳解

    Python集合set()使用的方法詳解

    這篇文章主要為大家詳細(xì)介紹了Python集合set()使用的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • python+openCV利用攝像頭實現(xiàn)人員活動檢測

    python+openCV利用攝像頭實現(xiàn)人員活動檢測

    這篇文章主要為大家詳細(xì)介紹了python+openCV利用攝像頭實現(xiàn)人員活動檢測,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • python基于gevent實現(xiàn)并發(fā)下載器代碼實例

    python基于gevent實現(xiàn)并發(fā)下載器代碼實例

    這篇文章主要介紹了python基于gevent實現(xiàn)并發(fā)下載器代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • python正則中最短匹配實現(xiàn)代碼

    python正則中最短匹配實現(xiàn)代碼

    這篇文章主要介紹了python正則中最短匹配實現(xiàn)代碼,需要的朋友可以參考下
    2018-01-01
  • python實現(xiàn)將文件名批量命名為四位數(shù)or五位數(shù)

    python實現(xiàn)將文件名批量命名為四位數(shù)or五位數(shù)

    這篇文章主要介紹了python實現(xiàn)將文件名批量命名為四位數(shù)or五位數(shù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • python使用socket遠(yuǎn)程連接錯誤處理方法

    python使用socket遠(yuǎn)程連接錯誤處理方法

    這篇文章主要介紹了python使用socket遠(yuǎn)程連接錯誤處理方法,可有效的獲取Python中socket連接錯誤處理的相關(guān)信息,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • 淺談pytorch中為什么要用 zero_grad() 將梯度清零

    淺談pytorch中為什么要用 zero_grad() 將梯度清零

    這篇文章主要介紹了pytorch中為什么要用 zero_grad() 將梯度清零的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • python的字典和集合你了解嗎

    python的字典和集合你了解嗎

    章主要為大家詳細(xì)介紹了python的字典和集合,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • Python hashlib模塊用法實例分析

    Python hashlib模塊用法實例分析

    這篇文章主要介紹了Python hashlib模塊用法,結(jié)合實例形式分析了Python使用hash模塊進(jìn)行md5、sha1、sha224、sha256、sha512等加密運(yùn)算相關(guān)操作技巧與注意事項,需要的朋友可以參考下
    2018-06-06

最新評論