首页 > 其他 > 详细

*Reverse Linked List II

时间:2015-12-21 07:03:59      阅读:183      评论:0      收藏:0      [点我收藏+]

 

Reverse a linked list from position m to n. Do it in-place and in one-pass.

For example:
Given 1->2->3->4->5->NULLm = 2 and n = 4,

return 1->4->3->2->5->NULL.

Note:
Given mn satisfy the following condition:
1 ≤ m ≤ n ≤ length of list.

 

 1 public class Solution {
 2     public ListNode reverseBetween(ListNode head, int m, int n) {
 3         if (m >= n || head == null) {
 4             return head;
 5         }
 6         
 7         ListNode dummy = new ListNode(0);
 8         dummy.next = head;
 9         head = dummy;
10         
11         for (int i = 1; i < m; i++) {
12             if (head == null) {
13                 return null;
14             }
15             head = head.next;
16         }
17         
18         ListNode premNode = head;
19         ListNode mNode = head.next;
20         ListNode nNode = mNode, postnNode = mNode.next;
21         for (int i = m; i < n; i++) {
22             if (postnNode == null) {
23                 return null;
24             }
25             ListNode temp = postnNode.next;
26             postnNode.next = nNode;
27             nNode = postnNode;
28             postnNode = temp;
29         }
30         mNode.next = postnNode;
31         premNode.next = nNode;
32         
33         return dummy.next;
34     }
35 }

 

*Reverse Linked List II

原文:http://www.cnblogs.com/hygeia/p/5062378.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!