Rotate List leetcode java
来源:互联网 发布:iframe 端口不同 跨域 编辑:程序博客网 时间:2024/06/05 11:28
题目:
Given a list, rotate the list to the right by k places, where k is non-negative.
For example:
Given 1->2->3->4->5->NULL
and k = 2
,
return 4->5->1->2->3->NULL
.
题解:
这道题主要先理解题意,就是倒着数k个node,从那开始到结尾和之前那部分对调,那个例子就是,4->5拿前面来,1->2->3拿后面去。
几个特殊:
k是可以大于整个list的长度的,所以这时要对k对len取模
如果取模之后得0,相当于不用rotate,直接返回
处理完特殊情况后,就用熟悉的faster/slower双指针解决就好(看到这种linkedlist,倒着数数的,就条件反射了)
先对faster设步长为n,然后faster和slower再一起走,知道faster.next==null,说明slower指向要倒着数的开始点的前一个位置。
所以slow.next就是要返回的newhead,保存一下。
然后把faster.next接到head上,slower.next存为null,作队尾。
这样就把list给rotate了。
public class Solution { public ListNode rotateRight(ListNode head, int n) { if(head==null||head.next==null||n==0) return head; ListNode fast = head, slow = head,countlen = head; ListNode newhead = new ListNode(-1); int len = 0; while(countlen!=null){ len++; countlen = countlen.next; } n = n%len; if(n==0) return head; for(int i = 0; i < n; i++) fast = fast.next; while(fast.next!=null){ slow = slow.next; fast = fast.next; } newhead = slow.next; fast.next = head; slow.next = null; return newhead; }}
放一张AC通过的图
阅读全文
0 0
- [Leetcode] Rotate List (Java)
- [LeetCode][Java] Rotate List
- leetcode:Rotate List 【Java】
- Rotate List leetcode java
- (Java)LeetCode-61. Rotate List
- 【leetcode】61. Rotate List【java】
- [LeetCode] 61. Rotate List java
- [leetcode][list] Rotate List
- [leetcode]61. Rotate List@Java解题报告
- LeetCode: Rotate List
- LeetCode Rotate List
- LeetCode : Rotate List
- [Leetcode] Rotate List
- [LeetCode] Rotate List
- [leetcode] Rotate List
- leetcode 70: Rotate List
- [Leetcode] Rotate List
- 【leetcode】Rotate List
- 机器视觉开源代码
- shell 双引号"" 单引号'' 反引号`` 的区别
- Oracle程序的优点和我缺点我是这样喜欢它的
- Java继承知识点总结(加面试题实例)
- 简单使用JTable读取数据库的表
- Rotate List leetcode java
- java中集合工具类Collections的使用
- 集训8.16最小生成树讲解
- 台湾大学林轩田机器学习技法课程学习笔记15 -- Matrix Factorization
- 用Tensorflow训练的AI玩flappy bird小游戏
- poj 1061 青蛙的约会
- jQuery ajax()请求数据工作笔记
- Java简单实现多线程复制文件
- offset家族