LeetCode-旋转链表问题

news2024/11/24 14:03:27

1.旋转链表

题目描述:

给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。
在这里插入图片描述
思路: 这里向右移动k个位置,相当于从链表的倒数第k个节点处断开,之后再将断开的两个子链表按照相反顺序链接。断开倒数第k个节点需要倒数第k+1个节点地址,链接两个子链表需要最后一个节点地址,返回最终的链表需要倒数第k个节点地址,这样就知道了需要求的东西。倒数第k个节点地址和第k+1个节点的地址可以通过之前学习过的求倒数节点的函数得到,至于最后一个节点地址遍历链表即可得到。不过这里得注意一点,那就是k是链表长度的倍数时,要直接返回链表,不然传入findNode函数的k为0时代码就会出问题。

代码:

class Solution {
    public ListNode rotateRight(ListNode head, int k) {
        if(head==null) {
            return null;
        }
        int len=0;
        ListNode temp=head;
        while(temp!=null) {
            temp=temp.next;
            len++;
        } 
        if(k%len==0) {
            return head;
        }
        ListNode pre=findNode(head,k%len+1);
        ListNode cur=findNode(head,k%len);
        ListNode tail=findNode(head,1);
        pre.next=null;
        tail.next=head;
        return cur;
    }


    public ListNode findNode(ListNode head, int k) {
        if(head==null) {
            return null;
        }
        ListNode fast=head;
        ListNode slow=head;
        while(k!=1) {
            fast=fast.next;
            k--;
        }
        while(fast.next!=null) {
            fast=fast.next;
            slow=slow.next;

        }
        return slow;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1307654.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java基础语法之继承

为什么要继承 会发现,狗和猫只有叫声不同,因为它们都是动物,会有相同的属性和行为,所以它们可以继承animla类 如何继承 用到extends关键字 这样就会简化好多 注意 1.Animal称为父类/超类/基类;dog,cat称…

多项目同时进行如何做好进度管理?

许多企业都面临着同时进行多个项目的情况,因此项目经理经常需要管理多个项目。多项目管理的难点不仅在于项目数量增加,还在于资源分配不均、难以监控多个项目进度以及复杂的沟通协作。 一、从项目经理的角度分析 首先,要把握高效项目管理的几…

Jmeter接口自动化测试 —— Jmeter变量的使用

​在使用jmeter进行接口测试时,我们难免会遇到需要从上下文中获取测试数据的情况,这个时候就需要引入变量了。 定义变量 添加->配置元件->用户自定义的变量 添加->配置元件->CSV 数据文件设置 变量的调用方式:${变量名} 变量的…

融了超24亿一分钱不花,放银行吃利息,这家存储创企厉害了

​引言:AI与大模型风起云涌,催生了这匹存储“黑马” 【全球存储观察 | 科技热点关注】 这家总部设在美国的存储初创公司,真的赶上AI与大模型时代的风口了。Vast Data公司最新再次获得E轮融资1.18亿美元,但是这个存储…

玩转Docker(二):centos7安装Docker

文章目录 一、安装Docker(centos7)二、运行第一个容器 环境选择: (1)管理工具:Docker Engine。使用最广泛。 (2)runtime:runc。Docker的默认runtime。 (3&…

【开源软件】最好的开源软件-2023-第25名 nbdev

自我介绍 做一个简单介绍,酒架年近48 ,有20多年IT工作经历,目前在一家500强做企业架构.因为工作需要,另外也因为兴趣涉猎比较广,为了自己学习建立了三个博客,分别是【全球IT瞭望】,【…

智能优化算法应用:基于蜻蜓算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于蜻蜓算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于蜻蜓算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.蜻蜓算法4.实验参数设定5.算法结果6.参考文献7.MA…

科技赋能医疗设备管理提质增效,实现医院高质量发展

近日,苏州阿基米德网络科技有限公司与医疗领域头部级媒体健康界,联合举办“数智为擎 提质增效——医学装备智慧管理创新发展论坛”的直播活动。 直播现场,来自上海交通大学医学院附属同仁医院、中华医学会航海医学分会、苏州阿基米德的专家们…

【ret2hbp】一道板子测试题 和 SCTF2023 - sycrpg

前言 ret2hbp 主要是利用在内核版本 v6.2.0 之前,cpu_entry_area mapping 区域没有参与随机化的利用。其主要针对的场景如下: 1)存在任意地址读,泄漏内核地址 2)存在无数次任意地址写,泄漏内核地址并提权…

Linux下网络通信及socket编程

文章目录 网络通信socket应用编程函数介绍IP地址转换函数程序源代码程序执行结果 网络通信 网络通信本质上是一种进程间通信,是位于网络中不同主机上的进程之间的通信。网络通信大致分为以下三层。 在硬件层,两台主机都提供了网卡设备,满足…

ADC学习总结

ADC的架构分类: 1、Delta-Sigma 采样率一般是在1M以内,位数一般可以做的很高,比如24位,Delta-Sigma ADC采用了过采样技术,不需要在模拟输入端加抗混叠滤波,由后端数字滤波器进行处理,通过信噪…

DDD领域驱动架构设计学习网站和开源框架

文章目录 介绍1、国外Axon2、阿里Cola 介绍 近年来,关于DDD的讨论越来越多,关于网上的文章很多都是理论上的介绍,由于自己最近也在学习相关知识,所以分享几个关于DDD落地的开源框架。 1、国外Axon Axon是国外一款比较系统的DDD…

Re59:读论文 Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks

诸神缄默不语-个人CSDN博文目录 诸神缄默不语的论文阅读笔记和分类 论文名称:Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks 模型开源地址:https://huggingface.co/facebook/rag-token-nq ArXiv下载地址:https://arxi…

高校刮起元宇宙风!3DCAT实时云渲染助力川轻化元校园建设

元宇宙,是一个虚拟的网络世界,它与现实世界相互连接,为人们提供了一个身临其境的数字体验。元宇宙的概念并不新鲜,早在上个世纪就有科幻作家和电影导演对它进行了想象和创造。但是,随着科技的发展,特别是5G…

iic应用篇

一.iic的优点 1. IIC总线物理链路简单,硬件实现方便,扩展性非常好(1个主机控制器可以根据需求增加从机数量,同时删减从机数量也不会影响总线通信);IIC总线只需要SDA和SCL两条信号线,相比于PCI/…

python和pygame实现烟花特效

python和pygame实现烟花特效 新年来临之际,来一个欢庆新年烟花祝贺,需要安装使用第三方库pygame,关于Python中pygame游戏模块的安装使用可见 https://blog.csdn.net/cnds123/article/details/119514520 效果图及源码 先看效果图&#xff1a…

c#异常强大的统计运行时间功能,一行代码,监控 C# 方法执行耗时

MethodTimer.Fody MethodTimer.Fody 是一个功能强大的库,可以用于测量 .NET 应用程序中的方法的执行时间。 它使用 Fody 插件框架可以无缝集成到您的项目中,所以向代码中添加性能测量功能变得非常容易。 如何使用 首先,需要安装 Nuget 包&am…

程序员必备的十种排序算法

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。关…

MS913/914 25-100MHz 10/12 位用于平面显示器链路Ⅲ的具有直流平衡编码和双向控制通道的串化器和解串器

MS913/MS914 芯片组是 25MHz~100MHz 10 位/12 位 FPD Link III SER/DES(串化器/解串器),它提供高速 FPD-Link III 接口和高速正向通路以及用于差分对上数据发送的双向 控制通路。广泛应用于车载摄像,医疗设备,管道探测等领 域。 主要特点…

改进的A*算法的路径规划(2)

子节点优化选择策略 (1)子节点选择方式 为了找到从起始点到终点的路径,需定义一种可以选择后续节点的方式。在 A*算法中两种常见的方法为4-邻接(见图5-7(a) 和8-邻接(见图5-7(b)), 但考虑到 在复杂越野环境上,我们希望智能车辆允许更多的自由运动来更…