Python 这里超过时限的原因是什么
给定一个链表,将列表向右旋转k个位置,其中k为非负 以下是一些例子:Python 这里超过时限的原因是什么,python,linked-list,nodes,Python,Linked List,Nodes,给定一个链表,将列表向右旋转k个位置,其中k为非负 以下是一些例子: 输入:1->2->3->4->5->NULL,k=2 输出:4->5->1->2->3->NULL 说明: 向右旋转1步:5->1->2->3->4->NULL 向右旋转两步:4->5->1->2->3->NULL 输入:0->1->2->NULL,k=4 输出:2->0->1->NULL 说明: 向右旋转1步:2->0->1->NULL 向右旋转2步:1->2->0->NULL 向右旋转3步:0->1->2->NULL 向右
输入:1->2->3->4->5->NULL,k=2
输出:4->5->1->2->3->NULL
说明:
向右旋转1步:5->1->2->3->4->NULL
向右旋转两步:4->5->1->2->3->NULL
输入:0->1->2->NULL,k=4
输出:2->0->1->NULL
说明:
向右旋转1步:2->0->1->NULL
向右旋转2步:1->2->0->NULL
向右旋转3步:0->1->2->NULL
向右旋转4步:2->0->1->NULL
代码:
类解决方案:
def rotateRight(self,head:ListNode,k:int)->ListNode:
如果k<0:
回流头
如果head为None或head.next为None:
回流头
它=头
而k!=0:
虽然it.next.next不是无:
it=it.next
temp=it.next
it.next=无
温度下一个=头
水头=温度
它=头
k-=1
回流头
上述代码适用于k<2000000
失败的测试用例是-
Last executed input:
[1,2,3]
2000000000
Error: Time Limit Exceeded
时间复杂度将是O(k*列表长度),对吗?使用两个
,而循环效率不高对于k
的大值,您可以使用k%列表长度来减少大量不必要的工作。(将列表旋转N是没有用的,因为列表最终会回到其原始状态。)使用两个while循环
是无效的。对于k
的大值,使用k%length\u of_list
可以减少大量不必要的工作。(将列表旋转N是没有用的,因为列表最终会返回其原始状态。)