LeetCode刷题(34)-Rotate List

来源:互联网 发布:lte无线网络优化论文 编辑:程序博客网 时间:2024/06/05 08:55

将链表的右边k个节点放到左端,此类问题可以使用快、慢点(差k个节点)的方式实现O(n)复杂度,但是本例存在k大于链表长度的情况,因此先便利求长度。

class Solution(object):    def rotateRight(self, head, k):        """        :type head: ListNode        :type k: int        :rtype: ListNode        """        if not head:            return None        node = head        lenn = 1        while node.next:            node = node.next            lenn += 1        cnt = k % lenn        fast = head        slow = head        i = 0        while  i < cnt:            fast = fast.next            i += 1            if not fast:                return head        while fast.next:            fast = fast.next            slow = slow.next        fast.next = head        dummy = slow.next        slow.next = None        return dummy
原创粉丝点击