LeetCode刷题实战61:旋转链表

Wesley13
• 阅读 528

算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !

今天和大家聊的问题叫做 旋转链表,我们先来看题面:

https://leetcode-cn.com/problems/rotate-list/

Given a linked list, rotate the list to the right by k places, where k is non-negative.

题意

给定一个链表,旋转链表,将链表每个节点向右移动 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

解题

https://segmentfault.com/a/1190000016302210

链表的题目,其实就是在考指针交换,这个题目先让链表连成一个环,然后再切开就可以完成了,如下图所示:

LeetCode刷题实战61:旋转链表

public class Solution {    public ListNode rotateRight(ListNode head, int k) {        if (head == null || head.next == null) {            return head;        }        int count = 1;        ListNode cur = head;        while (cur.next != null) {            count++;            cur = cur.next;        }        k = k % count;        if (k == 0) {            return head;        }        cur.next = head;        ListNode dummy = new ListNode(-1);        dummy.next = head;        ListNode prev = dummy;        for (int i = 0; i < count - k; i++) {            prev = prev.next;        }        cur = prev.next;        prev.next = null;        return cur;    }}

好了,今天的文章就到这里,如果觉得有所收获,请顺手点个在看或者转发吧,你们的支持是我最大的动力。

上期推文:

LeetCode1-50题汇总,速度收藏!

LeetCode刷题实战51:N 皇后

LeetCode刷题实战52:N皇后 II

LeetCode刷题实战53:最大子序和

LeetCode刷题实战54:螺旋矩阵

LeetCode刷题实战55:跳跃游戏

LeetCode刷题实战56:合并区间

LeetCode刷题实战57:插入区间

LeetCode刷题实战58:最后一个单词的长度

LeetCode刷题实战59:螺旋矩阵 II

LeetCode刷题实战60:第k个排列

LeetCode刷题实战61:旋转链表

本文分享自微信公众号 - 程序IT圈(DeveloperIT)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
徐小夕 徐小夕
2年前
这些经典的前端基础算法题, 你会做几道?
之前因为工作原因接触了很多有意思的算法知识,为了巩固大家的算法基础和编程能力,笔者总结了8道算法题,供大家学习参考.接下来我们来看看题目.1.有一个数组arra1,a2,a3,b1,b2,b3,c1,c2,c3...,通过算法将数组进行拆分,转化为如下格式的数组a1,b1,c1,a2,b2,c2,a3,
徐小夕 徐小夕
2年前
这些经典的前端基础算法题, 你会做几道?
之前因为工作原因接触了很多有意思的算法知识,为了巩固大家的算法基础和编程能力,笔者总结了8道算法题,供大家学习参考.接下来我们来看看题目.1.有一个数组arra1,a2,a3,b1,b2,b3,c1,c2,c3...,通过算法将数组进行拆分,转化为如下格式的数组a1,b1,c1,a2,b2,c2,a3,
Stella981 Stella981
2年前
Github最强算法刷题笔记.pdf
资料一昨晚逛GitHub,无意中看到一位大佬(https://github.com/halfrost)的算法刷题笔记,感觉发现了宝藏!有些小伙伴可能已经发现了,但咱这里还是忍不住安利一波,怕有些小伙伴没有看到。关于算法刷题的困惑和疑问也经常听朋友们提及。这份笔记里面共包含作者刷LeetCode算法题后整理的数百道题,每道题均附有详细题
Stella981 Stella981
2年前
LeetCode算法题
这是悦乐书的第258次更新,第271篇原创<br/01看题和准备今天介绍的是LeetCode算法题中Easy级别的第125题(顺位题号是551)。您将获得一个表示学生出勤记录的字符串。该记录仅包含以下三个字符:'A':缺席。'L':迟到。'P':在场。如果学生的出勤记录不超过一个“A”(缺席)或超过两个
Wesley13 Wesley13
2年前
AI面试刷题版
(1)代码题(leetcode类型),主要考察数据结构和基础算法,以及代码基本功虽然这部分跟机器学习,深度学习关系不大,但也是面试的重中之重。基本每家公司的面试都问了大量的算法题和代码题,即使是商汤、face这样的深度学习公司,考察这部分的时间也占到了我很多轮面试的60%甚至70%以上。我去face面试的时候,面试官是residualnet,s
Wesley13 Wesley13
2年前
2020字节高频算法题
字节跳动现在是非常火热的哈,小伙伴们都极为关注。每天都有许多人在面试,有很多童鞋在牛客网写面经,阅读量都非常高。大家都知道字节跳动面试的特色哈,面试必定是要手撕算法的哈~总结了最近两月字节跳动提前批的算法题,大都数都是leetcode上的原题哈,也有一部分是剑指offer上的原题。有需要的小伙伴可以关注下哈。leetcode1
Stella981 Stella981
2年前
2021金三银四想进字节大厂必看:LeetCode算法收割机+算法刷题宝典
最近有看到很多朋友想进大厂,四面竟然都考了算法,很多同学面对算法的问题都很头大,因为自己做项目很难用到,但是但凡高薪的职位面试都会问到。最近我整理了一份刷题宝典,这份刷题宝典,也让我进了心仪的大厂。今天给大家分享一下:!(https://static001.geekbang.org/infoq/07/074b4c3d563eca9e7f73a
Stella981 Stella981
2年前
Leetcode Index
序:  用于记录刷题过程中难度较大或思路怪异的题目,对于常规难度一般的题就不写入我的博客了,关于效率仅是提交时击败的百分比,可能会随时间波动,仅供参考,算法优劣以时间复杂度和空间复杂度为基准。欢迎留言讨论。题目序号难度效率Leetcode42.TrappingRainWater(https://www.oschina.
可莉 可莉
2年前
2021金三银四想进字节大厂必看:LeetCode算法收割机+算法刷题宝典
最近有看到很多朋友想进大厂,四面竟然都考了算法,很多同学面对算法的问题都很头大,因为自己做项目很难用到,但是但凡高薪的职位面试都会问到。最近我整理了一份刷题宝典,这份刷题宝典,也让我进了心仪的大厂。今天给大家分享一下:!(https://static001.geekbang.org/infoq/07/074b4c3d563eca9e7f73a