43 leetcode - Rotate List

来源:互联网 发布:吉利汽车硕士待遇 知乎 编辑:程序博客网 时间:2024/05/29 13:19
#!/usr/bin/python# -*- coding: utf-8 -*-'''Rotate ListGiven a list, rotate the list to the right by k places, where k is non-negative.For example:Given 1->2->3->4->5->NULL and k = 2,return 4->5->1->2->3->NULL.Subscribe to see which companies asked this question将单链表循环右移k次,每次移动一个结点。'''# Definition for singly-linked list.class ListNode(object):    def __init__(self, x):        self.val = x        self.next = Noneclass Solution(object):    def rotateRight(self, head, k):        """        :type head: ListNode        :type k: int        :rtype: ListNode        """        if k < 1 or head == None:            return head        length = 1        end = head        while end.next != None:            end = end.next            length += 1        k = k % length  #循环右移length个等于没有移动        if k == 0:            return head        k = length - k        start = head        while k > 1:    #寻找未右移截止点              start = start.next            k -= 1        new_head = start.next#新的起点        start.next = None        end.next = head      #将两个链表链接起来        return new_headif __name__ == "__main__":    s = Solution()    a = ListNode(1)    b = ListNode(2)    d = ListNode(3)    a.next = b    b.next =d    c = s.rotateRight(a,2)    while c != None:        print c.val        c = c.next
0 0
原创粉丝点击