20241111,LeetCode 每日一题,用 Go 实现旋转链表

题目

给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。

解题思路

  1. 计算链表长度:遍历链表来获取链表的长度 n,因为链表的旋转其实是循环移动,所以将 kn 取模 k = k % n,这样可以减少不必要的旋转次数。

  2. 判断边界情况:如果 k 为 0 或 n 小于等于 1,则无需旋转,直接返回原链表。

  3. 找到新链表的尾节点:旋转后的链表可以看作是从倒数第 k 个节点断开,将链表末尾连接到头部形成一个环,再在新的断点处截断形成新的链表。

    • 找到新链表的尾节点,即原链表的第 n - k 个节点,将它的 next 指向 null
  4. 返回新链表头节点:此时新链表的头节点是第 n - k + 1 个节点。

这样通过一次遍历获取长度,再一次遍历找到断点,时间复杂度为 O(n)

代码

func rotateRight(head *ListNode, k int) *ListNode {if head == nil || head.Next == nil || k == 0 {return head}n := 1tail := headfor tail.Next != nil {tail = tail.Nextlength++}k %= nif k == 0 {return head}tail.Next = headnewTail := headfor i := 0; i < n-k-1; i++ {newTail = newTail.Next}newHead := newTail.NextnewTail.Next = nilreturn newHead
}

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

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

相关文章

Linux驱动开发(4):Linux的设备模型

在前面写的驱动中&#xff0c;我们发现编写驱动有个固定的模式只有往里面套代码就可以了&#xff0c;它们之间的大致流程可以总结如下&#xff1a; 实现入口函数xxx_init()和卸载函数xxx_exit() 申请设备号 register_chrdev_region() 初始化字符设备&#xff0c;cdev_init函数…

在线项目管理系统有哪些选择?2024年9款推荐

本文提及的2024值得关注的9款在线项目管理系统有: 1.PingCode&#xff1b; 2.Worktile&#xff1b; 3.华炎魔方&#xff1b; 4.企业微信&#xff1b; 5.Tapd&#xff1b; 6.青云客&#xff1b; 7.ClickUp&#xff1b; 8.Wrike&#xff1b; 9.Smartsheet。 许多企业在选择在线项…

pytorch量化训练

训练时量化&#xff08;Quantization-aware Training, QAT&#xff09;是一种在模型训练过程中&#xff0c;通过模拟低精度量化效应来增强模型对量化操作的鲁棒性的技术。与后训练量化不同&#xff0c;QAT 允许模型在训练过程中考虑到量化引入的误差&#xff0c;从而在实际部署…

datastage在升级版本到11.7之后,部分在11.3上正常执行的SP报错SQLSTATE = 22007: 本机错误代码 = -180

在升级版本到11.7之后&#xff0c;部分在11.3上正常执行的SP开始报错&#xff0c;报的SQL错误是时间参数问题&#xff0c;但是一样的SP可以直接call sp执行&#xff0c;也可以手动调用作业执行&#xff0c;只有设置定时调度时作业会报错&#xff0c; CALLXXX.XXX(1,CURRENT TIM…

Windows VSCode .NET CORE WebAPI Debug配置

1.安装C#插件 全名C# for Visual Studio Code&#xff0c;选择微软的 2. 安装C# Dev Kit插件 全名C# Dev Kit for Visual Studio Code&#xff0c;同样是选择微软的 3.安装Debugger for Unity 4.配置launch.json 文件 {"version": "0.2.0","config…

Docker使用docker-compose一键部署nacos、Mysql、redis

下面是一个简单的例子&#xff0c;展示如何通过Docker Compose文件部署Nacos、MySQL和Redis。请确保您的机器上已经安装了Docker和Docker Compose。 1&#xff0c;准备好mysql、redis、nacos镜像 sudo docker pull mysql:8 && sudo docker pull redis:7.2 &&…

【模块一】kubernetes容器编排进阶实战之k8s基础概念

kubernetes 基本介绍 kubernetes 组件简介 - master: 主人&#xff0c;并不部署服务&#xff0c;而是管理salve节点。 后期更名为&#xff1a; controll plane&#xff0c;控制面板。 etcd: 2379&#xff08;客户端通信&#xff09;、2…

【MPC-Simulink】EX04 信号归一化简化权重调节过程与提高数值计算质量

【MPC-Simulink】EX04 信号归一化简化权重调节过程与提高数值计算质量 参考 Matlab 官网提供的 Model Predictive Control Toolbox - Getting Started Guide&#xff0c;在 MPC 控制器中指定缩放因子&#xff0c;可以简化权重调节过程&#xff0c;提高数值计算质量。 当被控对…

Dubbo分布式日志跟踪实现

前言 随着越来越多的应用逐渐微服务化后&#xff0c;分布式服务之间的RPC调用使得异常排查的难度骤增&#xff0c;最明显的一个问题&#xff0c;就是整个调用链路的日志不在一台机器上&#xff0c;往往定位问题就要花费大量时间。如何在一个分布式网络中把单次请求的整个调用日…

企业网络转型:优势与挑战

◎ 网络研究观 事实上&#xff0c;现代企业网络是一个由相互连接的数据、应用程序和基础设施组成的复杂网络。然而&#xff0c;企业不应让这种复杂性成为服务不可靠、安全漏洞或网络停机的借口。 由于组织和公司面临着从并购到云扩展的诸多挑战&#xff0c;以及网络技术日益复…

【算法一周目】双指针(1)

目录 1.双指针介绍 2.移动零 解题思路 C代码实现 3.复写零 解题思路 C代码实现 4.快乐数 解题思路 C代码实现 5.盛水最多的容器 解题思路 C代码实现 1.双指针介绍 常见的双指针有两种形式&#xff0c;一种是对撞指针&#xff0c;一种是快慢指针。 对撞指针&#x…

6547网:青少年软件编程Python等级考试(六级)真题试卷

2024年9月青少年软件编程Python等级考试&#xff08;六级&#xff09;真题试卷 题目总数&#xff1a;38 总分数&#xff1a;100 选择题 第 1 题 单选题 下面Python代码运行后出现的图像是&#xff1f;&#xff08; &#xff09; import matplotlib.pyplot as plt im…

【5种灵活有效方式】如何从死机手机中恢复内部数据?

本文介绍了5种方法来从死机的Android设备中恢复数据&#xff0c;包括使用U1tData安卓数据恢复软件、SD卡、OTG、Google云端硬盘和SamsungCloud。这些方法覆盖了不同情况下的数据恢复需求。 摘要由CSDN通过智能技术生成 我的手机掉在地上&#xff0c;现在无法开机。我丢失了所…

【安全测试】sqlmap工具(sql注入)学习

前言&#xff1a;sqimap是一个开源的渗透测试工具&#xff0c;它可以自动化检测和利用SQL注入缺陷以及接管数据库服务器的过程。它有一个强大的检测引擎&#xff0c;许多适合于终极渗透测试的小众特性和广泛的开关&#xff0c;从数据库指纹、从数据库获 取数据到访问底层文件系…

行业类别-智慧城市-子类别智能交通-细分类别自动驾驶技术-应用场景城市公共交通优化

1.大纲分析 针对题目“8.0 行业类别-智慧城市-子类别智能交通-细分类别自动驾驶技术-应用场景城市公共交通优化”的大纲分析&#xff0c;可以从以下几个方面进行展开&#xff1a; 一、引言 简述智慧城市的概念及其重要性。强调智能交通在智慧城市中的核心地位。引出自动驾驶…

24.11.11 JavaScript1

JavaScript&#xff08;简称js&#xff09;是⼀种描述语⾔&#xff0c;基于对象和事件驱动的脚本语⾔ JavaScript特点:脚本语⾔&#xff08;⼀种轻量级的编程语⾔&#xff09; ⼀种解释性语⾔&#xff08;⽆需预编译&#xff09; 被设计为向HTML⻚⾯添加交互⾏为 运⾏于客户端&…

PDF24:多功能 PDF 工具使用指南

PDF24&#xff1a;多功能 PDF 工具使用指南 在日常工作和学习中&#xff0c;PDF 是一种常见且重要的文档格式。无论是查看、编辑、合并&#xff0c;还是转换 PDF 文件&#xff0c;能够快速高效地处理 PDF 文档对于提高工作效率至关重要。PDF24 是一款免费、功能全面的 PDF 工具…

计算机的错误计算(一百五十一)

摘要 探讨 MATLAB 中反正弦 asin 与反余弦 acos 函数的计算精度问题。 例1. 已知 计算 及 直接贴图吧&#xff1a; 另外&#xff0c;16位的正确值分别为 0.1570785896071048e1、0.1043072384837152e-4、-0.1570785896071048e1 与 0.3141582222865945e1&#xff08;I…

Lua进阶用法之Lua和C的接口设计

一&#xff1a;lua/c的接口编程 首先skynet、openresty 都是深度使用 lua 语言的典范&#xff1b;学习 lua 不仅仅要学习基本用法&#xff0c;还要学会使用 c 与 lua 交互&#xff0c;这样才学会了 lua 作为胶水语言的精髓&#xff0c;下面看一下他们两个的调用过程。 虚拟栈&a…

macOS 下的 ARM 裸机嵌入式开发入门- 第二部分:实现第一个裸机应用并且调试

1、准备二进制运行程序镜像 利用 QEMU 仿真一个完整的系统&#xff0c;并创建最简单的“Hello world!”示例。 QEMU 模拟器支持 VersatilePB 平台&#xff0c;该平台包含一个 ARM926EJ-S 核心&#xff0c;以及其他外设&#xff0c;四个 UART 串行端口&#xff1b;特别是第一个…