首页 > 作文

Leetcode61 旋转链表 中等

更新时间:2023-04-04 02:23:18 阅读: 评论:0

题目:

思路:
仔细思考后旋转链表其实就相当于链表有个环,旋转后改变了头结点而已。
接下来可以找到一个关系,以题目示例1为例
假设5的next-1,也就是有一个环,那么移动后的头结点有什么规律
移动1,新头结点=倒数第一个=正数第5个
移动2,新头结点=倒数第二个=正数第4个
移动3,新头结点=倒数第三个=正数第3个
移动4,新头结点=倒数第四个=正数第2个
移动5=没移动
可以发现,新头结点=原链表正数第(链表长-移动步数+1)个
那么只需要头结点正向移动(链表长-移动步数)个就能到达新头结点

总结:

先修改链表成环计算新头结点=正向移动多少步把环撤销

代码:

class So马云的事迹lution {    public ListNode rotateRight(ListNode head, int k) {        if(head == null){            return null;        }        int len = 1;        //pHead是辅助指针,接下来进行重复使用,不再新建额外ListNode对象        ListNode pHead = head;        //计算链表长        while(pHead.next != null){            len++;            pHead = pH阡陌什么意思ead.next;        }        //计算要移动多少步,对链表长求余即可,避免不必要的移动,减少移动次数        int move = k % len;        if(南方有什么水果move == 0){            return head;        }        //修改链表成环        pHead.next = head;        ListNode newHead;        pHead = head;        int moveCount = len-(move-1)-1;        //找新头结点        while(moveCount > 0){            pHead = pHead.next;            moveCount--;        }        newHead 五月= pHead;        len--;        //移动len-1步到达末尾,把环去掉        while(len > 0){            pHead 雨说原文= pHead.next;            len--;        }        pHead.next = null;        return newHead;    }}

本文地址:https://blog.csdn.net/weixin_40208575/article/details/107878889

本文发布于:2023-04-04 02:23:16,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/8bbc62d4363f12eaf3a404566eb37599.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:Leetcode61 旋转链表 中等.doc

本文 PDF 下载地址:Leetcode61 旋转链表 中等.pdf

标签:结点   正数   链表   倒数
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图