LeetCode -- Rotate List
来源:互联网 发布:淘宝上的轮毂能买吗 编辑:程序博客网 时间:2024/05/22 10:47
题目描述:
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个节点放在链表前。
思路:
1. 遍历链表判断长度len是否小于k,如果是,则k = k % len
2. 如果len = k或len < 2或k < 1,直接返回
3. 遍历链表,移动len - k - 1个位置,存当前位置为q
4. 将q之后的节点存入stack
5. 遍历stack,依次将节点设为头结点
6. 最后,将q.next指向Null
实现代码:
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个节点放在链表前。
思路:
1. 遍历链表判断长度len是否小于k,如果是,则k = k % len
2. 如果len = k或len < 2或k < 1,直接返回
3. 遍历链表,移动len - k - 1个位置,存当前位置为q
4. 将q之后的节点存入stack
5. 遍历stack,依次将节点设为头结点
6. 最后,将q.next指向Null
实现代码:
/** * Definition for singly-linked list. * public class ListNode { * public int val; * public ListNode next; * public ListNode(int x) { val = x; } * } */public class Solution { public ListNode RotateRight(ListNode head, int k) { if(head == null){ return null; } var len = LenOf(head); if(len < 2 || k == len || k < 1){ return head; } if(k > len){ k = k % len; } var stack = new Stack<int>(); var p = head; for(var i = 0;i < len - k - 1;i ++){ p = p.next; } var q = p; p = p.next; while(p != null){ stack.Push(p.val); p = p.next; } q.next = null; while(stack.Count > 0) { var n = new ListNode(stack.Pop()); n.next = head; head = n; } return head; }private int LenOf(ListNode head){var p = head;var len = 0;while(p != null){len ++;p = p.next;}return len;}}
0 0
- [leetcode][list] Rotate List
- 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
- [LeetCode]Rotate List
- [leetcode]Rotate List
- LeetCode-Rotate List
- [leetcode] Rotate List
- LeetCode - Rotate List
- LeetCode:Rotate List
- LeetCode 61: Rotate List
- leetcode之Rotate List
- Spring ConnectionHolder
- 图片处理开源项目
- Android 计时器 Chronometer的简单实用
- LeetCode -- Roman to Integer
- Maven之—— 打包编译出现File encoding has not been set问题
- LeetCode -- Rotate List
- LeetCode -- Search Insert Position
- WebView 的用法
- 初始化列表的使用
- C++基础——格式化输出
- Android应用程序编译过程简述
- Volley帮我们省去的那些线程操作代码
- T-SQL程序设计之标识符,常量和变量
- 如何获取/dev/sdb下的所有分区的分区名以及开机自动挂载