用于链表顺时针旋转的Javascript程序
给定一个单链表和一个整数K ,任务是将链表顺时针向右旋转K位。
例子:
Input: 1 -> 2 -> 3 -> 4 -> 5 -> NULL, K = 2
Output: 4 -> 5 -> 1 -> 2 -> 3 -> NULL
Input: 7 -> 9 -> 11 -> 13 -> 3 -> 5 -> NULL, K = 12
Output: 7 -> 9 -> 11 -> 13 -> 3 -> 5 -> NULL
方法:旋转链表首先检查给定的 k 是否大于链表中的节点数。遍历链表并找到链表的长度,然后将其与 k 进行比较,如果小于则继续,否则通过对链表的长度取模,在链表大小的范围内推导它。
之后从列表的长度中减去 k 的值。现在,问题已更改为链表的左旋转,因此请按照以下步骤操作:
- 将第 k 个节点的下一个节点更改为 NULL。
- 将最后一个节点的下一个节点更改为上一个头节点。
- 将头部更改为第 (k+1) 个节点。
为此,需要指向第 k 个节点、第 (k+1) 个节点和最后一个节点的指针。
下面是上述方法的实现:
Javascript
输出:
4 -> 5 -> 1 -> 2 -> 3 -> NULL
时间复杂度: O(n),其中 n 是链表中的节点数。
辅助空间: O(1)
详情请参考链表顺时针旋转的完整文章!