当前位置: 首页 > news >正文

leetcode 61. 旋转链表 中等

给你一个链表的头节点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 <= 100
  • 0 <= k <= 2 * 10^9

分析:由于链表的长度可能小于k,而旋转链表长度的整数倍后链表会恢复原状,因此首先需要遍历一遍链表,统计链表长度len,同时记录链表的尾节点,通过k % len得到真正有效的旋转次数,避免重复旋转。之后将原链表的尾节点指向头节点,使链表首尾相连形成一个环。因为旋转后的链表本质上从原链表的某个位置断开,并重新选取一个新的头节点。因此,只需要找到新的头节点和新的尾节点,然后断开环即可完成旋转。

对于向右旋转k个位置,新的头节点应该是原链表中从头节点开始数第len - k个位置之后的节点。用dis = (len - k) % len表示从原头节点出发需要移动的步数。随后从head开始向后移动dis步,移动结束后,指针p指向新的头节点,指针q指向新的尾节点。

最后,将新的尾节点qnext指针置为空,断开之前形成的环,并返回新的头节点p。这样,原链表后面的k个节点就被移动到了链表前面,完成了链表的右旋操作。

/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ struct ListNode* rotateRight(struct ListNode* head, int k) { if(!k||head==NULL)return head; int len=0,dis=0; struct ListNode* p=head,*q=NULL; while(p!=NULL) { q=p,len++,p=p->next; } q->next=head,k=k%len,dis=(len-k)%len,p=head; for(int i=0;i<dis;++i) { q=p,p=p->next; } q->next=NULL; return p; }
http://www.jsqmd.com/news/881508/

相关文章:

  • 测试前端代码!
  • FPGA与机器学习协同加速量子点自动调谐:原理、实现与性能分析
  • 网络体系结构 | 物理层:传输介质与编码
  • 集成光子学与连续变量量子光学技术解析
  • 《Visual Studio 2022中高效使用Git的实战总结:团队协作与版本控制指南》
  • 祖玛游戏开发:状态机与路径拓扑的工程实践
  • 2026年质量好的大孔径深孔钻镗床/德州圆钢深孔钻镗床口碑好的厂家推荐 - 品牌宣传支持者
  • AArch64虚拟内存系统架构与权限控制详解
  • 2026年热门的潍坊磁选机/砂石磁选机厂家对比推荐 - 品牌宣传支持者
  • Future接口学习
  • 端到端课程自用 7 规划 端到端的训练数据与评测方法 笔记
  • 昇腾CANN ops-math 仓:数据类型转换的性能陷阱
  • 【小白吃透AI】大语言模型LLM超详细原理全集|通俗图解+训练流程+推理机制+优缺点+面试大全
  • 2026年知名的扫描电镜产品/台式扫描电镜/扫描电镜/SEM扫描电镜口碑好的厂家推荐 - 行业平台推荐
  • 2026年工业设备用日规电源线插头/电源线插头/电源线插头对插/瑞士电源线插头厂家精选合集 - 行业平台推荐
  • 2026年5月儿童护眼灯品牌推荐:TOP5排名书桌防蓝光评测
  • CentOS 7 SSH弱加密算法加固实战指南
  • 鸿蒙PC:Qt适配OpenHarmony实战【乐单】:不接音频引擎,也能先把播放清单 UI 跑起来
  • 室内点云轮廓提取
  • 01-大模型AI:大模型学习指南
  • 2026年靠谱的磁选机/矿用磁选机/潍坊干式磁选机优质厂家汇总推荐 - 行业平台推荐
  • SQL Server 2017 Evaluation 版升级 Developer 版:解决升级卡死与连接失败的全过程复盘
  • 2026年便宜的家用专用电源线/澳标电源线/AC电源线/国标电源线生产厂家推荐 - 品牌宣传支持者
  • Outlook与Gmail OAuth 2.0 Proxy 实现原理与工程实践
  • C语言基础 内存管理
  • 交互式测试与条件有效性:动态数据决策的统计可靠性保障
  • 麒麟系统启动卡住别慌!这可能是磁盘文件系统坏了,试试这几条Linux命令自救
  • 为什么企业要把 EDR 放在终端,HIDS 放在主机?
  • Gemini Omni Flash 完整指南:Google AI 视频生成器深度解析
  • 深入理解RAG中的嵌入模型Embedding Model