首页 > 代码库 > [Leetcode] Reverse Linked List II
[Leetcode] Reverse Linked List II
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.
Solution:
1 /** 2 * Definition for singly-linked list. 3 * public class ListNode { 4 * int val; 5 * ListNode next; 6 * ListNode(int x) { 7 * val = x; 8 * next = null; 9 * }10 * }11 */12 public class Solution {13 public ListNode reverseBetween(ListNode head, int m, int n) {14 if(m==n)15 return head;16 ListNode dummy=new ListNode(-1);17 dummy.next=head;18 ListNode pointer=dummy;19 int cnt=m-1;20 while(cnt!=0){21 pointer=pointer.next;22 cnt--;23 }24 ListNode l1,l2,l3;25 l1=pointer.next;26 ListNode last=l1;27 l2=l1.next;28 l3=l2.next;29 cnt=n-m-1;30 while(cnt!=0){31 l2.next=l1;32 33 l1=l2;34 l2=l3;35 l3=l3.next;36 cnt--;37 }38 l2.next=l1;39 last.next=l3;40 pointer.next=l2;41 return dummy.next;42 }43 }
[Leetcode] Reverse Linked List II
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。