首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Leetcode|快慢指针|61. 旋转链表

Leetcode|快慢指针|61. 旋转链表

作者头像
SL_World
发布2022-01-10 15:10:03
发布2022-01-10 15:10:03
34200
代码可运行
举报
文章被收录于专栏:XX
运行总次数:0
代码可运行

1 快慢指针

代码语言:javascript
代码运行次数:0
运行
复制
class Solution {
public:
    ListNode* rotateRight(ListNode* head, int k) {
        if (!head || k == 0) return head;
        int size = 0;     
        auto node = head;
        // 记录链表长度为size
        while (node) {
            size++;
            node = node->next;
        }
        // 快慢指针间隔的step
        int step = k % size;
        if (step == 0) return head;     // 边界判断
        auto slow = head, fast = head;  // 快慢指针
        for (int i = 0; i < step; i++)  // 快指针先走k步
            fast = fast->next;
        while (fast->next) {            // 快慢指针同时走到链尾
            slow = slow->next;
            fast = fast->next;
        }
        auto newhead = slow->next;      // 慢指针next对应nullptr,快指针next对应head
        slow->next = nullptr;
        fast->next = head;
        return newhead;
    }
};
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/09/09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 快慢指针
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档