博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode:旋转链表【61】
阅读量:5116 次
发布时间:2019-06-13

本文共 1186 字,大约阅读时间需要 3 分钟。

LeetCode:旋转链表【61】

题目描述

给定一个链表,旋转链表,将链表每个节点向右移动 个位置,其中 是非负数。

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

题目分析

  这道题目我用了最笨的方法,我假设每次只向右旋转一个单位,然后执行N次

  向右旋转一个单位怎么处理呢?

  找到最后两个节点,让最后一个节点的next指向第一个节点,然后倒数第二个节点的next指向空。

  

  处理一个问题,对于循环次数我们可以用求余数来提高效率,比如长度为5,那么循环10000次也还是原来的就不需要循环。

Java题解

package linklist;import java.util.Scanner;public class RotateList_61 {    public static void main(String[] args) {        ListNode node1 = new ListNode(1);        ListNode node2 = new ListNode(2);        ListNode node3 = new ListNode(3);        ListNode node4 = new ListNode(4);        ListNode node5 = new ListNode(5);        node1.next=node2;        node2.next=node3;        node3.next=node4;        node4.next=null;        new RotateList_61().rotateRight(node1,2);    }    public ListNode rotateRight(ListNode head, int k) {        if(head==null)            return null;        int len = getLen(head);        for(int i = 0;i

 

转载于:https://www.cnblogs.com/MrSaver/p/9898931.html

你可能感兴趣的文章
springboot No Identifier specified for entity的解决办法
查看>>
慵懒中长大的人,只会挨生活留下的耳光
查看>>
"远程桌面连接--“发生身份验证错误。要求的函数不受支持
查看>>
【BZOJ1565】 植物大战僵尸
查看>>
VALSE2019总结(4)-主题报告
查看>>
浅谈 unix, linux, ios, android 区别和联系
查看>>
51nod 1428 活动安排问题 (贪心+优先队列)
查看>>
中国烧鹅系列:利用烧鹅自动执行SD卡上的自定义程序(含视频)
查看>>
Solaris11修改主机名
查看>>
latex for wordpress(一)
查看>>
如何在maven工程中加载oracle驱动
查看>>
Flask 系列之 SQLAlchemy
查看>>
aboutMe
查看>>
【Debug】IAR在线调试时报错,Warning: Stack pointer is setup to incorrect alignmentStack,芯片使用STM32F103ZET6...
查看>>
一句话说清分布式锁,进程锁,线程锁
查看>>
python常用函数
查看>>
FastDFS使用
查看>>
服务器解析请求的基本原理
查看>>
[HDU3683 Gomoku]
查看>>
【工具相关】iOS-Reveal的使用
查看>>