旋转链表 Java,leetcode 旋转链表 Java
题干
示例 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相关推荐
- Java leetcode 相交链表
相交链表 题目概述 编写一个程序,找到两个链表相交的起点 示例 输入:ListA = 4–>1–>8–>4–>5 ListA = 5–>0–>1–>8–> ...
- 【手绘漫画】图解LeetCode之旋转链表(LeetCode 61题)
文章目录 图解LeetCode刷题计划 1.写在前面 2.题目 3.正文 4.代码 图解LeetCode刷题计划 1.写在前面 手绘漫画系列正式上线!!!"图解LeetCode刷题计划&qu ...
- leetcode 相交链表 java
相交链表 题干 编写一个程序,找到两个单链表相交的起始节点. 如下面的两个链表: 在节点 c1 开始相交. 示例 1: 输入:intersectVal = 8, listA = [4,1,8,4,5] ...
- Java 数据结构(链表LinkedList增删改查、数组Vector、获取Vector最大值、交换Vector两成员位置、栈的实现、压栈出栈实现反转、队列Queue)
在链表(LinkedList)的开头和结尾添加元素 import java.util.LinkedList;public class Main {public static void main(Str ...
- Java数据结构之链表、树、堆、图手写双向非循环链表
数据结构.手写双向非循环链表 文章目录 数据结构.手写双向非循环链表 链表 1.链表的分类 2.链表的特点 二.手写双向非循环链表 2.1方法总结 2.2 环境搭建 2.3 add 添加结点 2.3. ...
- 都是套路:盘点 Java 面试中链表的几大解题模板方法!
来自:码海 前言 如果说数据结构是算法的基础,那么数组和链表就是数据结构的基础.因为像堆,栈,对,图等比较复杂的数组结基本上都可以由数组和链表来表示,所以掌握数组和链表的基本操作十分重要. 今天就来看 ...
- 基于链表实现队列(基于Java实现)
title: 基于链表实现队列(基于Java实现) tags: 链表 队列 基于链表的队列实现方法的原理: 基于链表的实现,跟前面的基于数组实现一样,同样也需要两个指针:head指针和tail指针.它 ...
- 九章算法【总结】Java 搞定链表-面试常考题目精选
面试大总结之链表 CS3K.com 一.OverView: 链表是面试中常考的,本文参考了其它一些文章,加上小编的自己总结,基本每个算法都测试并优化过. 算法大全(1)单链表 中还有一些链表题目,将来 ...
- Java实现单链表的合并(保证数据的有序性)
一.思路 1.比较两个链表的大小 2.将小链表插入到大链表中 3.使用插入保证链表数据的有序性 二.核心代码 /*** 合并两个链表,并且按照有序合并* @param singleLinkedList ...
- 用JAVA语言创建链表的方法
链表刚学习时是用c来学习的,那时候对于结构体,指针这些东西实现链表觉得很合适,但想要应用到java上还是有些不同的 这里,我学习下用java来使用链表的方法: 首先,定义节点类 //链表节点 clas ...
最新文章
- Linux上压缩目录以及目录下的所有文件
- 回答我,停止 Goroutine 有几种方法?
- 几种C++ std::string和std::wstring相互转换的转换方法
- 【c++算法刷题笔记】——洛谷1
- linux openjdk_OpenJDK作为Linux上的默认Java
- 文章读后感--社会文明分析总结
- mysql数据类型的学习心得_MySQL自学总结 (一到四章)
- vs2015 mysql edmx_VS2015+MySql EF的配置问题
- 新技能 get —— 五笔打字
- 移动端Vue3框架demo
- CSS:个人常用按钮样式
- C/C++:个人收支系统实现
- php代码实现微信代扣,PHP是如何实现微信H5支付的?
- Android开发一个简单的交互式App
- Windows 7 产品密钥是否安全
- html5 图片反弹,使用cubic-bezier()创建带有反弹特效的CSS动画
- 关闭Excel2016的动画效果
- 嵌入式Linux学习笔记之Linux内核裁剪
- (网页)HTML小技巧的一些小技巧
- 手柄映射软件_【手柄教程】崩坏2手柄按键映射以及设置教程