当前位置: 首页 > 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路由协议)
  • 三大白电巨头去年净利近900亿元:美的持续领跑,格力营收下滑
  • 西藏阿里地区日土县连发两次地震,分别为4.8级和3.8级
  • 在循环往复的拍摄中,重新发现世界
  • 我国首个大型通用光谱望远镜JUST在青海启动建设
  • 俄联邦安全局:俄军高级官员汽车爆炸案嫌疑人已被捕
  • 对外投资增长、消费市场持续升温,中国经济砥砺前行