【LetMeFly】61.旋转链表算总长——算新头力扣题目链接https://leetcode.cn/problems/rotate-list/给你一个链表的头节点head旋转链表将链表每个节点向右移动k个位置。示例 1输入head [1,2,3,4,5], k 2输出[4,5,1,2,3]示例 2输入head [0,1,2], k 4输出[2,0,1]提示链表中节点的数目在范围[0, 500]内-100 Node.val 1000 k 2 * 109解题方法两次遍历第一次遍历一遍链表计算出链表长度n nn将链表尾节点指向头节点形成循环链表。之后将k m o d n k\mod nkmodn将链表右移k kk次相当于令倒数第k kk个节点变成新链表的头部即将正着数第n − k n-kn−k个节点变成新头。让新头节点的上一个节点next指向空返回新头节点就好了。注意链表可能为空记得避免空指针情况发生。时间复杂度O ( l e n ( l i s t n o d e ) ) O(len(listnode))O(len(listnode))空间复杂度O ( 1 ) O(1)O(1)AC代码C/* * LastEditTime: 2026-05-05 11:49:41 */classSolution{public:ListNode*rotateRight(ListNode*head,intk){if(!head){returnnullptr;}intn1;ListNode*phead;while(p-next){n;pp-next;}p-nexthead;k%n;kn-k;phead;for(inti1;ik;i){pp-next;}ListNode*ansp-next;p-nextnullptr;returnans;}};同步发文于CSDN和我的个人博客原创不易转载经作者同意后请附上原文链接哦~千篇源码题解已开源