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

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

题目

思路

每个节点向右移动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;
    }
};

相关文章:

  • 【每日八股】Redis篇(二):数据结构
  • Docker部署 MongoDB及常用命令
  • 定时任务特辑 Quartz、xxl-job、elastic-job、Cron四个定时任务框架对比,和Spring Boot集成实战
  • Linux7-线程
  • DDD - 整洁架构
  • vscode设置终端复制快捷键(有坑!!!)
  • 《论多源数据集成及应用》审题技巧 - 系统架构设计师
  • 大模型应用开发:核心技术与领域实践
  • Python常见面试题的详解19
  • WPF框架学习
  • maven模块化管理
  • openstack部署
  • pikachu靶场搭建教程
  • RocketMq学习笔记
  • 如何在idea中搭建SpringBoot项目
  • C++中结构体与结构体变量 和 类与对象的区别
  • Rust学习~tokio简介
  • 服务端渲染(SSR):概念、优势与实现
  • 失眠治愈手册(二):问题优化
  • 计算机网络之路由协议(RIP路由协议)
  • 商务部:中方愿同各国一道加强合作,促进跨境电商健康可持续发展
  • 牛市早报|央行宣布降准降息,公募基金改革最新方案落地
  • 习近平抵达莫斯科对俄罗斯进行国事访问并出席纪念苏联伟大卫国战争胜利80周年庆典
  • AMD:预计美国芯片出口管制将对全年营收造成15亿美元损失
  • 澳大利亚工党可以靠“回避”胜选,但继续执政需要更多勇气
  • 巴基斯坦外交部:印度侵略行径侵犯巴主权