( Leetcode 61 ) Rotate List
2016-05-03 20:07
525 查看
题目:Rotate List
Given a list, rotate the list to the right by k places, where k is non-negative.
For example:
Given
return
解题思路:
1. 首先求的链表的长度, 如果k值超过了链表长度,将其与链表长度取模
2. 接下来设置两个指针p和q,首先将p移动k个结点,之后p和q同时移动
3. 接下来就是拼接了,不详细说了,具体代码里面有注释
具体Java代码见下面:
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->NULLand k =
2,
return
4->5->1->2->3->NULL.
解题思路:
1. 首先求的链表的长度, 如果k值超过了链表长度,将其与链表长度取模
2. 接下来设置两个指针p和q,首先将p移动k个结点,之后p和q同时移动
3. 接下来就是拼接了,不详细说了,具体代码里面有注释
具体Java代码见下面:
public class Solution { public static ListNode rotateRight(ListNode head, int k) { if( k <= 0 || head == null ){ return head; } ListNode p = head; int len = 0; while( p != null ){ if( p.next == null ){ pre = p; } p = p.next; len++; } //如果k超过链表长度,取模 k = k % len; p = head; for( int i =1; i <= k; ++i ){ p = p.next; } /******************** 下面当循环结束的时候p指向最后一个节点 q指向倒是第k+1个结点,例如链表1 2 3 4 5 ,k = 2时 循环结束 p = 5, q = 3 */ ListNode q = head; while( p.next != null ){ q = q.next; p = p.next; } //此时将后半段接到head前面,前半段最后一个节点指针赋值null //重新更改head节点指向 p.next = head; head = q.next; q.next = null; return head; } }
相关文章推荐
- WebSocket不同版本的三种握手方式以及一个Netty实现JAVA类
- IdentityHashMap 与HashMap的对比
- STM32+freertos+lwip
- MFC tab控件使用
- POJ 3041 Asteroids(最小点覆盖)
- Leetcode 257. Binary Tree Paths
- 关于回调函数的一些理解
- leetcode67:Add Binary
- IOS杂记
- 解决Hibernate native sql中双冒号(:)转义的问题
- const用法
- 陶哲轩实分析 附录 A 习题解答
- php字符串操作
- 文章标题
- 陶哲轩实分析 附录 A 习题解答
- 数组――Remove Duplicates from Sorted Array
- 刚开博客,水的开始!
- java笔记→递归算法、枚举法、辗转相除法
- android下tcpdump抓包
- Spark组件之GraphX学习4--Structural Operators:mask