leetcode61. 旋转链表

leetcode 61. 旋转链表 61. 旋转链表 给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。 示例 1: 输入: 1->2->3->4->5->NULL, k = 2 输出: 4->5->1->2->3->NULL 解释: 向右旋转 1 步: 5->1->2->3->4->NULL 向右旋转 2 步: 4->5->1->2->3->NULL 示例 2: 输入: 0->1-&gt 阅读详情

题目

给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。

示例 1:

输入: 1->2->3->4->5->NULL, k = 2
输出: 4->5->1->2->3->NULL
解释:
向右旋转 1 步: 5->1->2->3->4->NULL
向右旋转 2 步: 4->5->1->2->3->NULL

示例 2:

输入: 0->1->2->NULL, k = 4
输出: 2->0->1->NULL
解释:
向右旋转 1 步: 2->0->1->NULL
向右旋转 2 步: 1->2->0->NULL
向右旋转 3 步: 0->1->2->NULL
向右旋转 4 步: 2->0->1->NULL


思路

双指针,注意边界问题

实现

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* rotateRight(ListNode* head, int k) {
        int length = 0;
        ListNode* tmp = head;
        while (tmp) {
            ++length;
            tmp = tmp->next;
        }
        if (length == 0 || length == 1) {
            return head;
        }
        k = k % length;
        if (k == 0) {
            return head;
        }
        ListNode* end = head;
        while (k > 1) {
            end = end->next;
            --k;
        }
        ListNode* pre = new ListNode(0);
        pre->next = head;
        while (end->next) {
            pre = pre->next;
            end = end->next;
        }
        ListNode* res = pre->next;
        end->next = head;
        pre->next = NULL;
        return res;
    }
};
【中等】力扣算法题解析LeetCode61:旋转链表 本文介绍了如何旋转链表,将每个节点向右移动k个位置。关键思路包括:处理边界情况(空链表或k=0时直接返回),计算链表长度并成环,通过取模运算确定有效旋转步数,定位新尾节点后断开环并返回新头节点。代码实现清晰,时间复杂度为O(n)。适用于节点数在500以内、k值极大的场景。 阅读详情

相关推荐

SpringBoot项目启动后ShardingSphere5.0首次SQL查询慢?这个预热技巧帮你搞定

本文针对SpringBoot项目集成ShardingSphere 5.0后首次SQL查询慢的问题,深入剖析了其根源在于SQL解析引擎的懒加载与缓存初始化。文章提供了三种有效的预热技巧,包括精准的SQL解析引擎预热、简单查询触发全链路预热以及可配置的生产级方案,帮助开发者将初始化成本提前至应用启动阶段,从而消除性能毛刺,提升用户体验与系统稳定性。

chair的专栏 1062

61. 旋转链表【 力扣(LeetCode) 】

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

yyh520025的博客 1485

使用freesurfer和3Dslicer进行脑区分割和电极定点(详细版)

1、安装好matlab和freesurfer2、在目标位置创建文件夹3、开放权限4、将需要计算的nii文件放入文件夹。

zQIANYUN的博客 5621

leetcode-61-旋转链表(java)

title: leetcode-61-旋转链表(java) date: 2019-09-15 15:25:33 categories: leetcode tags: leetcode 旋转链表 给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。 示例 1: 输入: 1->2->3->4->5->NULL, k = 2 输出: ...

weixin_42479155的博客 341

ArcGIS投影变换实战:从WGS_1984到Krasovsky_1940_Albers的精准转换

本文详细解析了在ArcGIS中如何将WGS_1984地理坐标系下的数据精准转换至Krasovsky_1940_Albers投影坐标系。文章通过实战案例,重点阐述了地理坐标系与投影坐标系的区别,并逐步演示了创建自定义地理变换、使用投影栅格工具以及进行批量处理和结果验证的核心操作流程,旨在解决地图数据叠加不准的常见问题。

weixin_29251131的博客 462

在overleaf中使用bibtex引用参考文献

最近在挑选写tex的平台,挑来挑去,个人感觉overleaf给我带来的体验感是最舒适的。不过由于对内部的文件组织和make进行了一层封装,所以与一般的本地平台编译tex会有一点不同。此处写一下在overleaf中使用bibtex的方法。 在tex中使用bibtex引用文献是一件很舒适的事,毕竟这是tex的优点之一(要是tex比word难用,我干什么不去用word,hhh) 第一步,我们创建一个.bib文件,名字随便起,我这边起为reference.bib。 然后打开谷歌学术,搜索你想要引用的文章,并找到

锦恢的博客 4万+

LeetCode 力扣 61. 旋转链表

题目描述(中等难度) 将最后一个链表节点移到最前边,然后重复这个过程 k 次。 解法一 很明显我们不需要真的一个一个移,如果链表长度是 len, n = k % len,我们只需要将末尾 n 个链表节点整体移动到最前边就可以了。可以结合下边的图看一下,我们只需要找到倒数 n 1 个节点的指针把它指向 null,以及末尾的指针指向头结点就可以了。找倒数 n 个结点,让我想到了 19题,利用...

wind_liang的博客 885

STC8H硬件IIC从机模式实战:手把手教你驱动OLED屏幕(附完整代码)

本文详细介绍了如何使用STC8H单片机的硬件IIC从机模式驱动SSD1306 OLED屏幕,包括硬件连接、寄存器配置、中断处理和实际应用中的优化技巧。通过完整的代码示例和实战经验分享,帮助开发者快速掌握I2C通信协议和OLED屏幕驱动技术,提升嵌入式开发效率。

weixin_33747129的博客 336

LeetCode 61旋转链表

LeetCode 61旋转链表 题目简述:给定一个链表,旋转链表,将链表每个节点向右移动 k个位置,其中 k是非负数。 示例1: 输入: 1->2->3->4->5->NULL, k = 2 输出: 4->5->1->2->3->NULL 解释: 向右旋转 1 步: 5->1->2->3->4->NULL 向右旋转 2 步: 4->5->1->2->3->NULL 示例2:

XBlog 197

关于DEJA_VU3D - Cesium功能集专栏说明

专栏主要目的是对工作中基于Cesium实现过的功能进行整合,暂时打算一周2-3更的样子来更新,每一篇都会奉上完整源代码(尽可能把代码简洁一些)。功能实现大多数是自己琢磨实现的,也有参考其他大神后整理实现的,初步算了算现在有差不多实现小130个左右的功能,后续也会不断的更新。..........................................

总得学点什么的博客 2万+

华为OD机试真题 新系统 【社交网络相同爱好好友查询】

华为od机试真题 新系统【社交网络相同爱好好友查询】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为od机试真题【社交网络相同爱好好友查询】多语言题解实现。

qq_45776114的博客 1336

LeetCode 61:旋转链表

目录LeetCode题目描述解题 LeetCode 题目描述 解题      /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* rotateRight(ListNod

s_Shune 173

算法 | 基于灰狼优化算法的无人机三维路径规划方法研究(附matlab代码)

针对复杂环境下的无人机三维路径规划问题,本文提出一种基于灰狼优化算法(Grey Wolf Optimizer, GWO)的解决方案。通过模拟灰狼群体的社会等级与协作捕猎机制,结合动态参数调整策略,优化路径长度与避障性能。实验表明,相较于粒子群优化(PSO)和遗传算法(GA),GWO算法在收敛速度与路径成本上分别提升约25%和18%,且在三维城市地形中表现出更强的避障鲁棒性。本文提供完整的MATLAB代码实现,为无人机自主导航提供理论与技术支撑。

尘世冰封的专栏 287

【LeetCode】61. 旋转链表

61. 旋转链表解题摘要 问题描述:给定链表头节点和整数k,将链表向右旋转k个位置。 核心思路: 闭环取模法(最优解): 遍历链表获取长度n并记录尾节点 计算有效旋转次数k = k%n 将尾节点连接头节点形成环 定位新尾节点(走n-k-1步) 断开环并返回新头节点 关键优化: 通过取模减少无效旋转(k = k%n) 时间复杂度O(n),空间复杂度O(1) 示例: 输入[1,2,3,4,5], k=2 → 输出[4,5,1,2,3] 输入[0,1,2], k=4 → 输出[2,0,1] 复杂度分析: 闭环取模

qq_32019341的博客 1178

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

61. 旋转链表 力扣 LeetCode

题目 61. 旋转链表 难度中等250收藏分享切换为英文关注反馈 给定一个链表,旋转链表,将链表每个节点向右移动k个位置,其中k是非负数。 示例1: 输入: 1->2->3->4->5->NULL, k = 2 输出: 4->5->1->2->3->NULL 解释: 向右旋转 1 步: 5->1->2->3->4->NULL 向右旋转 2 步: 4->5->1->2->3-&...

ZhaoXia_hit的博客 191

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

题解 力扣 LeetCode 61 旋转链表 C/C++

时间复杂度 O(N) 1.特殊情况判断:head == NULL 2.获取链表长度 length,该数据很有用,等下会用到好几次 3.k %= length,防止 k过大出现多轮重复操作 4.找到将来的末节点和头结点,记录将来的头结点后,将来的末节点->next = NULL 举个例子: {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, NULL} rotate 3 >> {8, 9, 10, 1, 2, 3, 4, 5, 6, 7, NULL} 7 是将来的末节点,8 是将来的头结点

qwq_ovo_pwp的博客 543

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

力扣(LeetCode)61. 旋转链表

思路: ①先计算出head链表的长度 ②通过观察,发现题目的意思是从链表的末尾依次取出元素放置链表头部,那么这一定是个循环(参见示例2),所以在k>len的时候可以将k - n*len,那么新的k如果和len相等,那就刚好凑成一个循环,直接返回head即可,否则进入循环,找到第len-k个元素(头节点为1)设为p ③temp = p->next,q = p->next,对q进行...

Pwnpanda的博客 461

Leetcode 61. 旋转链表 C++

Leetcode 61. 旋转链表 题目 给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。 测试样例 1. 输入: 1->2->3->4->5->NULL, k = 2 输出: 4->5->1->2->3->NULL 解释: 向右旋转 1 步: 5->1->2->3->4->NULL 向右旋转 2 步: 4->5->1->2->3->NULL 2. 输入:

weixin_43750513的博客 224

leetcode 61旋转链表

旋转链表 给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。 leetcode61 示例 1: 输入:head = [1,2,3,4,5], k = 2 输出:[4,5,1,2,3] 示例 2: 输入:head = [0,1,2], k = 4 输出:[2,0,1] 提示: 链表中节点的数目在范围 [0, 500] 内 -100 <= Node.val <= 100 0 <= k <= 2 * 109 这道题本质上不难,但是由于我很少写链表

qq_45304531的博客 169

旋转链表leetcode61

旋转链表leetcode61 题目: 给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。 示例 1: 输入: 1->2->3->4->5->NULL, k = 2 输出: 4->5->1->2->3->NULL 解释: 向右旋转 1 步: 5->1->2->3->4->NULL ...

amor_1的博客 107

LeetCode61- 旋转链表

LeetCode61- 旋转链表 最近全国疫情严重,待在家里没事干,马上又要准备春招了,最近刷刷题,记录一下!再说一句,武汉加油,大家出门记得戴口罩! 1、题目 给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。 示例: 输入: 1->2->3->4->5->NULL, k = 2 输出: 4->5->1->2->...

sk18192449347的博客 271

LeetCode61-旋转链表

LeetCode61-旋转链表 给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。 示例 1: 输入: 1->2->3->4->5->NULL, k = 2 输出: 4->5->1->2->3->NULL 解释: 向右旋转 1 步: 5->1->2->3->4->NULL 向右旋...

lyd1995的博客 175

力扣LeetCode #61 旋转链表(RotateRight)

- 题目描述 给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。 来源:LeetCode - 示例 示例 1: 输入: 1->2->3->4->5->NULL, k = 2 输出: 4->5->1->2->3->NULL 解释: 向右旋转 1 步: 5->1->2->3->4->NULL 向右旋转 2 步: 4->5->1->2->3->NULL 示例 2:

weixin_49155948的博客 325

【Leetcode】Leetcode61.旋转链表

Leetcode61.旋转链表 题目 给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。 示例 1: 输入: 1->2->3->4->5->NULL, k = 2 输出: 4->5->1->2->3->NULL 解释: 向右旋转 1 步: 5->1->2->3->4->NULL...

voidfaceless的博客 242
上一篇: leetcode79. 单词搜索
下一篇: leetcode75. 颜色分类
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值