欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

leetcode61. 旋转链表

程序员文章站 2022-05-06 09:39:51
...

leetcode61. 旋转链表

思路

**先将该链表遍历,得到链表长度len,然后首尾相连,然后找到原来的第(n-k % len-1)个位置断开。
注意,如图,红色虚线为应该截断的位置,则start应该正好来到(n-k % len-1)这个位置,再令res = start.nextstart.next=None。那么意味着i必须小于(n-k % len-1)
leetcode61. 旋转链表

class Solution:
    def rotateRight(self, head: ListNode, k: int) -> ListNode:
        if head is None or head.next is None: return head
        start = head     #用start记录原来的head
        end = None
        len = 0
        while head:
            end = head
            len += 1
            head =head.next
        end.next = start       #首尾相连
        #开始截断
        p = len - k % len - 1  #截断位置
        i = 0
        while i < p:   #一定要小于p-1,不然截断位置错误
            start = start.next
            i += 1
        res = start.next
        start.next = None
        return res