首页 > 其他 > 详细

leetcode61

时间:2019-12-10 13:55:33      阅读:97      评论:0      收藏:0      [点我收藏+]
 1 class Solution:
 2     def constructLink(self,lists):
 3         n = len(lists)
 4         if n == 0:
 5             return None
 6         if n == 1:
 7             return ListNode(lists[0])
 8         
 9         head = ListNode(lists[-1])
10         for i in range(n-2,-1,-1):
11             cur = ListNode(lists[i])
12             cur.next = head 
13             head = cur
14         return head
15         
16     def rotateRight(self, head: ListNode, k: int) -> ListNode:
17         lists = []
18         count = 0
19         while head != None:
20             lists.append(head.val)
21             count += 1
22             head = head.next
23         if count == 0:
24             return None
25         k = k % count
26         newlist = lists[count-k:] + lists[:count-k]
27         return self.constructLink(newlist)

先将原来的链表展开,存储到数组中,并计算数组长度。

再将数组按照k值翻转,重新排好顺序。

最后使用尾插法,重建链表。

将复杂问题分开步骤处理,可以使代码更清晰。

leetcode61

原文:https://www.cnblogs.com/asenyang/p/12015992.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!