*Reverse Linked List II

mac2022-06-30  82

 

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->NULL, m = 2 and n = 4,

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

Note:Given m, n 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 }

 

转载于:https://www.cnblogs.com/hygeia/p/5062378.html

最新回复(0)