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

算法与数据结构(旋转链表)

题目

思路

每个节点向右移动k个位置,其实就是从头开始遍历,将n-k个节点顺序插入到链表的尾部。

如上图所示的示例1,先将1插入到5的后面,再将2插入到1的后面,最后将3插入到2的后面即可。

代码详解

定义一个cur变量用来遍历到最后一个节点,方便后面的插入,a为移动节点的个数,iter变量从头开始遍历,将每个节点不断地往后插入。插入完毕后,将最后一个节点的next指向空即可。

iter即为新链表的头结点

代码

class Solution {
public:
    ListNode* rotateRight(ListNode* head, int k) {
        if(head==nullptr || head->next==nullptr)
            return head;
        ListNode* cur = head;
        int n = 1;
        while(cur->next)
        {
            n++;
            cur = cur->next;
        } 
        int a = n - k%n;
        ListNode* iter = head;
        while(a--)
        {
            cur->next = iter;
            cur = iter;
            iter = iter->next; 
        }
        cur->next = nullptr;
        return iter;
    }
};


http://www.kler.cn/a/558839.html

相关文章:

  • (四)趣学设计模式 之 原型模式!
  • YOLOv12:以注意力为中心的物体检测
  • Servlet 国际化
  • Python pip 缓存清理:全面方法与操作指南
  • 失眠治愈手册(二):问题优化
  • 一文2000字从0到1用Jmeter全流程性能测试实战
  • 为 Power Automate 注册 Adobe PDF Services
  • 深度学习训练camp:第R4周: Pytorch实现:LSTM-火灾温度预测
  • VScode+stfp插件,实现文件远程同步保存【2025实操有效】
  • JAVA-Exploit编写(13-15)--JAVAFX-GUI检测工具编写实现
  • OPPO发布新型折叠屏手机 起售价8999
  • DeepSeek R1:引领AI推理模型新篇章
  • [自动驾驶-传感器融合] 激光雷达的运动补偿
  • Django check_password原理
  • 【计算机网络】OSI模型、TCP/IP模型、路由器、集线器、交换机
  • 【JavaScript】《JavaScript高级程序设计 (第4版) 》笔记-Chapter21-错误处理与调试
  • C++经典框架案例(六)
  • vue从入门到精通(十二):列表渲染
  • 【量化科普】Moving Average,移动平均线
  • React Native 0.76正式版发布,带来多项目更新