2.2.6 Rotate List
来源:互联网 发布:淘宝专业刷信誉团队 编辑:程序博客网 时间:2024/06/05 18:29
Link: https://oj.leetcode.com/problems/rotate-list/
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.
1 找出数组长度。2 找出断开位置。3 把old tail连上old head。但是做错了。
我的第一遍代码:
public class Solution { public ListNode rotateRight(ListNode head, int n) { if(head == null || head.next == null || n == 0) return head; //first find out the length of the list ListNode cur = head; int len = 0; while(cur != null){ cur = cur.next; len ++;//len = 5 } //move cur to the new head cur = head; for(int i = 1; i < len - n; i++){ cur = cur.next; } ListNode newHead = cur.next; cur.next = null; ListNode tail = newHead; while(tail.next != null){ tail = tail.next; } tail.next = head; return newHead; }}Input:{1,2}, 2Output:{2,1}Expected:{1,2}
正确的思路:上述第2, 3步交换顺序。1 找出数组长度。2 把old tail连上old head。3 断开。
注意:n 可能大于链表长度,所以要用len - n % len (而不是len - n)
Time: O(n), Space: O(1)
public class Solution { public ListNode rotateRight(ListNode head, int n) { if(head == null || head.next == null || n == 0) return head; //first find out the length of the list ListNode cur = head; int len = 1; while(cur.next != null){ len ++; cur = cur.next; } //connect tail to head to make a circle cur.next = head; for(int i = 0; i < len - n%len; i++){ cur = cur.next; } ListNode newHead = cur.next; cur.next = null; return newHead; }}
0 0
- 2.2.6 Rotate List
- 2.2.6—单链表—Rotate List
- Rotate List
- Rotate List
- Rotate List
- Rotate List
- Rotate List
- Rotate List
- Rotate List
- Rotate List
- Rotate List
- Rotate List
- Rotate List
- rotate-list
- Rotate List
- Rotate List
- Rotate List
- Rotate List
- 黑马程序员 多态
- Backbone.js的技巧和模式
- Maximal Rectangle
- JAVA泛型【转】
- js中的null和undefined
- 2.2.6 Rotate List
- 走进STM32世界之Hex程序烧写
- 今日作息及食谱(8.22)
- Permutations II(improve)
- 计算机视觉、机器学习相关领域论文和源代码大集合
- js中实现多态
- java中的时间(1)
- Javascript继承机制的设计思想
- WebService第三课 使用CXF开发WebService客户端