当前位置: 首页 > news >正文

[Leetcode 61][Medium]-旋转链表

 目录

一、题目描述

二、整体思路

三、代码


一、题目描述

 

原题链接

二、整体思路

        首先发现这样的规律:当k大于等于链表中节点总数n时,会发现此时旋转后的链表和k=k%n时的旋转后的链表一样。同时对于特殊情况n=0和n=1时,无论k的值为多少都可以直接返回head。

        因为k的所有取值情况都可以通过规律化归解决,同时旋转后的链表元素依然为原来链表中的元素且后续节点顺序与原链表相同。因此我们可以在链表尾部再接上一个和原来链表一模一样的链表,找到旋转k次之后的头结点,再从此截取原链表长度的结点作为返回值。

        n-k的由来:旋转k次,代表从链表尾部往前数第k个结点为新的头结点,那么从链表头往后数就是第n-k个结点。

三、代码
 

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode rotateRight(ListNode head, int k) {if(head==null || head.next==null) return head;int n=1;ListNode nxt=head;ListNode last=head;while(last.next!=null){last=last.next;n++;}if(k%n==0) return head;last.next=nxt;for(int i=0;i<n-(k%n);i++){head=head.next;}ListNode ret=head;for(int j=1;j<n;j++){ret=ret.next;}ret.next=null;return head;}
}

http://www.lryc.cn/news/430102.html

相关文章:

  • 高效分页策略:掌握 LIMIT 语句的正确使用方法与最佳实践
  • 拼图游戏02
  • 在本地进行Django支付宝扫码支付-当面付开发
  • redis-RedisTemplate.opsForGeo 的geo地理位置相关的方法演示
  • 做短视频矩阵要十几人团队吗?云微客助阵,一人即可
  • 常用语音识别开源工具的对比与实践
  • Fortify代码安全测试工具在静态应用安全测试(SAST)方面针对典型问题的改进
  • AWS 消息队列服务 SQS
  • 【iOS】——响应者链和事件传递链
  • mysql查询慢
  • 【Java-==与equals】
  • ai回答 部署前端项目时需要使用ssh吗
  • 结合ChatGPT与Discord,提高团队合作效率
  • VisualStudio|开发环境相关技巧及问题
  • Redis远程字典服务器(11)—— redis客户端介绍
  • 【mysql】mysql之DDL数据定义语言
  • Word文件密码忘记,该如何才能编辑Word文件呢?
  • 解锁移动办公新境界,七款顶尖移动终端管控软件分享!助您轻松掌控每一台移动设备,企业必备!
  • 基于微信小程序的大用户心理咨询系统设计与实现---附源码99040
  • Bigtop 从0开始(上)
  • 算法基础及例题
  • 机器学习-KNN 算法
  • 【Linux】如何快速查看 linux 服务器有几个cpu
  • [数据集][目标检测]电力场景轭式悬架锈蚀分类数据集6351张2类别
  • 【嵌入式linux开发】智能家居入门5:老版ONENET,多协议接入(QT、微信小程序、HTTP协议、ONENET云平台、旭日x3派)
  • 软考-软件设计师(程序设计语言习题)
  • 「C++系列」vector 容器
  • 梯度的概念
  • 低代码开发:机遇与挑战并存的技术革新
  • Linux之RabbitMQ集群部署