Reverse Nodes in k-Group
2015-10-01 10:38
549 查看
题目:
Given a linked list, reverse the nodes of a linked list k at a time and return its modified list.
If the number of nodes is not a multiple of k then left-out nodes in the end should remain as it is.
You may not alter the values in the nodes, only nodes itself may be changed.
Only constant memory is allowed.
For example,
Given this linked list:
For k = 2, you should return:
For k = 3, you should return:
分析:
简单;翻转链表变形
参考代码:
http://www.cnblogs.com/lichen782/p/leetcode_Reverse_Nodes_in_kGroup.html
Given a linked list, reverse the nodes of a linked list k at a time and return its modified list.
If the number of nodes is not a multiple of k then left-out nodes in the end should remain as it is.
You may not alter the values in the nodes, only nodes itself may be changed.
Only constant memory is allowed.
For example,
Given this linked list:
1->2->3->4->5
For k = 2, you should return:
2->1->4->3->5
For k = 3, you should return:
3->2->1->4->5
分析:
简单;翻转链表变形
参考代码:
http://www.cnblogs.com/lichen782/p/leetcode_Reverse_Nodes_in_kGroup.html
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ public class Solution { /** * Reverse a link list between pre and next exclusively * an example: * a linked list: * 0->1->2->3->4->5->6 * | | * pre next * after call pre = reverse(pre, next) * * 0->3->2->1->4->5->6 * | | * pre next * @param pre * @param next * @return the reversed list's last node, which is the precedence of parameter next */ private static ListNode reverse(ListNode pre, ListNode next){ ListNode last = pre.next;//where first will be doomed "last" ListNode cur = last.next; while(cur != next){ last.next = cur.next; cur.next = pre.next; pre.next = cur; cur = last.next; } return last; } public static ListNode reverseKGroup(ListNode head, int k) { if(head == null || k == 1) return head; ListNode dummy = new ListNode(0); dummy.next = head; ListNode pre = dummy; int i = 0; while(head != null){ i++; if(i % k ==0){ pre = reverse(pre, head.next); head = pre.next; }else { head = head.next; } } return dummy.next; } }
相关文章推荐
- **LeetCode-Count Complete Tree Nodes
- nodejs学习笔记二:闭包和异步编程
- nodejs学习笔记一:什么是事件驱动编程风格
- LeetCode---Swap Nodes in Pairs
- nodejs vim 配置
- node.js下LDAP查询实例分享
- [LeetCode] Delete Node in a Linked List
- node.js下LDAP查询实例分享
- 10个常见的Node.js面试题
- NodeJs学习笔记01-你好Node
- LeetCode——Populating Next Right Pointers in Each Node
- node.js下LDAP查询实践
- 第7课 nodejs请求响应
- 第五课 nodejs 路由实现并处理请求作出响应
- 2015第40周二Node学习
- 使用node.js进行API自动化回归测试
- 让node跑得更快的建议
- Sublime Text3 简单开发nodejs
- 开始学习Nodejs的API参考文档<2>
- nodejs 版本更新问题(v0.8.14 -> v4.1.1)