Reverse Nodes in k-Group
2015-07-16 18:32
666 查看
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
public class Solution {
public ListNode reverseKGroup(ListNode head, int k) {
if (head == null) {
return null;
}
if (k <= 1) {
return head;
}
ListNode dummy = new ListNode(-1);
dummy.next = head;
ListNode start = dummy;
Boolean isLast = false;
while (true) {
ListNode cur = start;
for (int i = 0; i < k; i++) {
cur = cur.next;
if (cur == null) {
isLast = true;
break;
}
}
if (isLast) {
break;
}
start = myReverse(start, k);
}
return dummy.next;
}
private ListNode myReverse(ListNode start, int k) {
ListNode ptr = start.next;
for (int i = 1; i < k; i++) {
ListNode temp = ptr.next;
ptr.next = temp.next;
temp.next = start.next;
start.next = temp;
}
return ptr;
}
}
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
public class Solution {
public ListNode reverseKGroup(ListNode head, int k) {
if (head == null) {
return null;
}
if (k <= 1) {
return head;
}
ListNode dummy = new ListNode(-1);
dummy.next = head;
ListNode start = dummy;
Boolean isLast = false;
while (true) {
ListNode cur = start;
for (int i = 0; i < k; i++) {
cur = cur.next;
if (cur == null) {
isLast = true;
break;
}
}
if (isLast) {
break;
}
start = myReverse(start, k);
}
return dummy.next;
}
private ListNode myReverse(ListNode start, int k) {
ListNode ptr = start.next;
for (int i = 1; i < k; i++) {
ListNode temp = ptr.next;
ptr.next = temp.next;
temp.next = start.next;
start.next = temp;
}
return ptr;
}
}
相关文章推荐
- C#中Ilist与list的区别小结
- C#中IList<T>与List<T>的区别深入解析
- C#对list列表进行随机排序的方法
- Vc++ 控件List Control用法总结
- C++实现的泛型List类分享
- C# Datagridview绑定List方法代码
- javascript radio list的实现细节(多浏览器兼容)
- Javascript实现关联数据(Linked Data)查询及注意细节
- c++ STL容器总结之:vertor与list的应用
- 大家注意vector, list, set, map成员函数erase
- ASP.NET―001:GridView绑定List、页面返回值具体实现
- List all the Databases on a SQL Server
- js Map List 遍历使用示例
- Java List双击事件实现方法
- velocity显示List与Map的方法详细解析
- 关于STL中list容器的一些总结
- 关于C#泛型列表List<T>的基本用法总结
- Java集合类中文介绍
- use jscript with List Proxy Server Information
- list泛型自定义排序示例