旋转链表Python解法
生活随笔
收集整理的這篇文章主要介紹了
旋转链表Python解法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
給你一個鏈表的頭節點 head ,旋轉鏈表,將鏈表每個節點向右移動 k 個位置。
例:
輸入:head = [1,2,3,4,5], k = 2 輸出:[4,5,1,2,3]解析:
將首尾相連,然后找出頭結點的位置進行切斷即可。
# Definition for singly-linked list. # class ListNode(object): # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution(object):def rotateRight(self, head, k):""":type head: ListNode:type k: int:rtype: ListNode"""if not head: return None # 空判斷head0, num = head, 1 # 頭指針,鏈表長度計數器while head.next: # 計算長度head, num = head.next, num + 1head.next = head0 # 首尾相連step = num - k % num - 1 # 需要移動的步數,k % num避免k大于鏈表長度while step: # 找尋切入點head0, step = head0.next, step - 1head1, head0.next = head0.next, None # 切開return head1 # 返回頭指針總結
以上是生活随笔為你收集整理的旋转链表Python解法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 螺旋矩阵 IIPython解法
- 下一篇: 如何取消电脑的定时关机命令