Leetcode: Reverse Linked List II

来源:互联网 发布:西方古代科技成就知乎 编辑:程序博客网 时间:2024/06/16 00:02

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.


Solution:

public class Solution {    public ListNode reverseBetween(ListNode head, int m, int n) {        if (head == null || head.next == null || m == n) {            return head;        }                ListNode dummy = new ListNode(0);        dummy.next = head;        head = dummy;                ListNode pre = new ListNode(0);        for (int i = 0; i < m; i++) {            pre = head;            head = head.next;        }                ListNode p1 = pre.next;        ListNode p2 = p1.next;        for (int j = m; j < n; j++) {            ListNode p3 = p2.next;            p2.next = p1;            p1 = p2;            p2 = p3;            }                pre.next.next = p2;        pre.next = p1;        return dummy.next;    }}


0 0
原创粉丝点击