news 2026/9/10 10:42:00

DeepSeek LeetCode 61. 旋转链表 C++实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DeepSeek LeetCode 61. 旋转链表 C++实现

以下是 LeetCode 61. 旋转链表的 C++ 实现,包含详细注释。思路是先计算链表长度,连成环,再根据旋转步数确定新的头节点并断开环。

/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next) {} * }; */classSolution{public:ListNode*rotateRight(ListNode*head,intk){// 空链表、单节点或无需旋转的情况if(!head||!head->next||k==0)returnhead;// 1. 计算链表长度,并找到尾节点intn=1;ListNode*tail=head;while(tail->next){tail=tail->next;n++;}// 2. 将链表首尾相连,形成环tail->next=head;// 3. 实际需要移动的步数(取模,避免重复旋转)k=k%n;// 4. 找到新的尾节点:原头节点向前走 n - k - 1 步// (因为新头是原头向右移动 n-k 个位置,即新尾是原头向左移动 k 个位置)ListNode*newTail=head;for(inti=1;i<n-k;i++){newTail=newTail->next;}// 5. 断开环,得到新链表ListNode*newHead=newTail->next;newTail->next=nullptr;returnnewHead;}};

复杂度分析:

· 时间复杂度:O(n),其中 n 是链表长度。需要遍历链表两次(一次求长度,一次找新尾),但总体仍是线性。
· 空间复杂度:O(1),只使用了常数个额外指针。

关键点:

· 将链表连成环后,旋转操作等价于在正确位置断开环。
· 使用取模避免 k 大于链表长度时的无效遍历。
· 注意处理边界情况(空链表、单节点、k=0)。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/10 10:38:47

CVAT 国际化完全指南:3 个 i18n 入口与语言包配置一次讲清

CVAT 国际化完全指南&#xff1a;3 个 i18n 入口与语言包配置一次讲清 【免费下载链接】cvat Computer Vision Annotation Tool (CVAT) is a leading platform for building high-quality visual datasets for vision AI. It offers open-source, cloud, and enterprise produc…

作者头像 李华
网站建设 2026/9/10 10:38:03

泰坦尼克号生存预测:从数据清洗到模型优化的完整指南

1. 项目背景与核心目标泰坦尼克号生存预测是机器学习领域最经典的入门项目之一&#xff0c;它基于1912年泰坦尼克号沉船事件中的乘客数据&#xff0c;要求我们构建模型预测每位乘客的生存概率。这个项目之所以成为机器学习教学的"Hello World"&#xff0c;是因为它完…

作者头像 李华
网站建设 2026/9/10 10:35:33

CANN/ge捕获张量API

CaptureTensor 【免费下载链接】ge GE&#xff08;Graph Engine&#xff09;是面向昇腾的图编译器和执行器&#xff0c;提供了计算图优化、多流并行、内存复用和模型下沉等技术手段&#xff0c;加速模型执行效率&#xff0c;减少模型内存占用。 GE 提供对 PyTorch、TensorFlow …

作者头像 李华