题干

示例 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

想法

看题干我们就知道了

肯定是先定位到链表尾巴构成循环链表

再通过k值决定新断开的位置

直接看代码

Java代码

/**

* Definition for singly-linked list.

* public class ListNode {

* int val;

* ListNode next;

* ListNode(int x) { val = x; }

* }

*/

/**

* Definition for singly-linked list.

* public class ListNode {

* int val;

* ListNode next;

* ListNode(int x) { val = x; }

* }

*/

class Solution

{

public ListNode rotateRight(ListNode head, int k)

{

if(k==0)

return head;

if(head==null)

return head;

int length=1;

ListNode cur=head;

while(cur.next!=null)

{

cur=cur.next;

length++;

}

cur.next=head;//已经把链表首尾相接的连上了

int m=length-k%length;//这个是算法的关键,找到应该在何处断开

for(int i=0;i

{

cur=cur.next;

}

ListNode newhead=cur.next;//获得新的链表头节点

cur.next=null;//断开链表环

return newhead;

}

}

宰了那只汤姆猫

发布了125 篇原创文章 · 获赞 0 · 访问量 1670

私信

关注

标签:head,ListNode,cur,int,next,链表,Java,NULL,leetcode

来源: https://blog.csdn.net/qq_43491066/article/details/104495068

旋转链表 Java,leetcode 旋转链表 Java相关推荐

  1. Java leetcode 相交链表

    相交链表 题目概述 编写一个程序,找到两个链表相交的起点 示例 输入:ListA = 4–>1–>8–>4–>5 ListA = 5–>0–>1–>8–> ...

  2. 【手绘漫画】图解LeetCode之旋转链表(LeetCode 61题)

    文章目录 图解LeetCode刷题计划 1.写在前面 2.题目 3.正文 4.代码 图解LeetCode刷题计划 1.写在前面 手绘漫画系列正式上线!!!"图解LeetCode刷题计划&qu ...

  3. leetcode 相交链表 java

    相交链表 题干 编写一个程序,找到两个单链表相交的起始节点. 如下面的两个链表: 在节点 c1 开始相交. 示例 1: 输入:intersectVal = 8, listA = [4,1,8,4,5] ...

  4. Java 数据结构(链表LinkedList增删改查、数组Vector、获取Vector最大值、交换Vector两成员位置、栈的实现、压栈出栈实现反转、队列Queue)

    在链表(LinkedList)的开头和结尾添加元素 import java.util.LinkedList;public class Main {public static void main(Str ...

  5. Java数据结构之链表、树、堆、图手写双向非循环链表

    数据结构.手写双向非循环链表 文章目录 数据结构.手写双向非循环链表 链表 1.链表的分类 2.链表的特点 二.手写双向非循环链表 2.1方法总结 2.2 环境搭建 2.3 add 添加结点 2.3. ...

  6. 都是套路:盘点 Java 面试中链表的几大解题模板方法!

    来自:码海 前言 如果说数据结构是算法的基础,那么数组和链表就是数据结构的基础.因为像堆,栈,对,图等比较复杂的数组结基本上都可以由数组和链表来表示,所以掌握数组和链表的基本操作十分重要. 今天就来看 ...

  7. 基于链表实现队列(基于Java实现)

    title: 基于链表实现队列(基于Java实现) tags: 链表 队列 基于链表的队列实现方法的原理: 基于链表的实现,跟前面的基于数组实现一样,同样也需要两个指针:head指针和tail指针.它 ...

  8. 九章算法【总结】Java 搞定链表-面试常考题目精选

    面试大总结之链表 CS3K.com 一.OverView: 链表是面试中常考的,本文参考了其它一些文章,加上小编的自己总结,基本每个算法都测试并优化过. 算法大全(1)单链表 中还有一些链表题目,将来 ...

  9. Java实现单链表的合并(保证数据的有序性)

    一.思路 1.比较两个链表的大小 2.将小链表插入到大链表中 3.使用插入保证链表数据的有序性 二.核心代码 /*** 合并两个链表,并且按照有序合并* @param singleLinkedList ...

  10. 用JAVA语言创建链表的方法

    链表刚学习时是用c来学习的,那时候对于结构体,指针这些东西实现链表觉得很合适,但想要应用到java上还是有些不同的 这里,我学习下用java来使用链表的方法: 首先,定义节点类 //链表节点 clas ...

最新文章

  1. Linux上压缩目录以及目录下的所有文件
  2. 回答我,停止 Goroutine 有几种方法?
  3. 几种C++ std::string和std::wstring相互转换的转换方法
  4. 【c++算法刷题笔记】——洛谷1
  5. linux openjdk_OpenJDK作为Linux上的默认Java
  6. 文章读后感--社会文明分析总结
  7. mysql数据类型的学习心得_MySQL自学总结 (一到四章)
  8. vs2015 mysql edmx_VS2015+MySql EF的配置问题
  9. 新技能 get —— 五笔打字
  10. 移动端Vue3框架demo
  11. CSS:个人常用按钮样式
  12. C/C++:个人收支系统实现
  13. php代码实现微信代扣,PHP是如何实现微信H5支付的?
  14. Android开发一个简单的交互式App
  15. Windows 7 产品密钥是否安全
  16. html5 图片反弹,使用cubic-bezier()创建带有反弹特效的CSS动画
  17. 关闭Excel2016的动画效果
  18. 嵌入式Linux学习笔记之Linux内核裁剪
  19. (网页)HTML小技巧的一些小技巧
  20. 手柄映射软件_【手柄教程】崩坏2手柄按键映射以及设置教程

热门文章

  1. Java 输入/输出 I/O流 RandomAccessFile
  2. 利用paramiko模块实现堡垒机+审计功能
  3. 在中国网络管理技术大会上的主题演讲
  4. C# WinFrom 对字符进行UTF-8编码
  5. Windows 8实例教程系列 - 数据绑定高级实例
  6. 体验ASP.NET 2.0客户端回调功能(CallBack)
  7. 12.卷1(套接字联网API)---IPv4与IPv6的互操作性
  8. 16. XML DOM
  9. 71. MVC 改进
  10. 3. jQuery 选择器