91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python數據結構之旋轉鏈表的示例分析

發布時間:2021-06-30 09:31:29 來源:億速云 閱讀:160 作者:小新 欄目:編程語言

這篇文章主要為大家展示了“Python數據結構之旋轉鏈表的示例分析”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Python數據結構之旋轉鏈表的示例分析”這篇文章吧。

示例圖

Python數據結構之旋轉鏈表的示例分析

題目描述:給定一個鏈表,旋轉鏈表,使得每個節點向右移動k個位置,其中k是一個非負數

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

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

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

1. 先求出整個鏈表的長度

2. 根據k值找到需要移動的部分鏈表的前驅(樣例中的3)

3. 在前驅之后將鏈表斷開,移動后半部分

代碼如下:

# 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:        curcur = cur.next       count += 1     # 為節省代碼量,這里是一個很有技巧的處理:用尾節點鏈接頭結點      cur.next = head      # 此處,k為cur從尾節點到要斷開部分的前驅需走的步數      k = count - k % count      # 找到前驅      while k != 0:        curcur = cur.next       k -= 1     # 斷開      head = cur.next     cur.next = None     # 因為首尾已經相連,所以直接返回前驅后面的那個節點即可,此處引用為head      return head      # write your code here

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

以上是“Python數據結構之旋轉鏈表的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

尉氏县| 海宁市| 施秉县| 故城县| 阜新| 观塘区| 东阿县| 宁安市| 大英县| 阳朔县| 泉州市| 冀州市| 永平县| 迁西县| 平谷区| 全州县| 大石桥市| 临汾市| 内乡县| 宁波市| 仲巴县| 平舆县| 仁寿县| 霍山县| 班戈县| 中阳县| 泰和县| 沾益县| 五家渠市| 余干县| 南澳县| 黄龙县| 曲松县| 南木林县| 浙江省| 林甸县| 大石桥市| 诸暨市| 教育| 三原县| 象州县|