leetcode-92. Reverse Linked List II

来源:互联网 发布:淘宝上传宝贝 编辑:程序博客网 时间:2024/05/10 22:27

leetcode-92. 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.

这里我是先找到首尾指针,然后用一个数组去维护所有需要转换的ListNode的所有指针,然后依次更改就好,用数组比较方便。

/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { val = x; } * } */public class Solution {    public ListNode reverseBetween(ListNode head, int m, int n) {        if(m==n) return head;        ListNode dump = new ListNode(0);        dump.next = head;        ListNode mN = dump;        m--;        n--;        if(m>n){            int x = m;            m = n;            n = x;        }        for(int i = 0 ; i < m ; i++)            mN = mN.next;        ListNode nN = mN.next;        ListNode [] list = new ListNode[n-m+1];        for(int i = 0; i < list.length ; i++){            list[i] = nN;            nN = nN.next;        }        for(int i = list.length-1 ; i>0 ; i--){            list[i].next = list[i-1];        }        list[0].next = nN;        mN.next = list[list.length-1];        return dump.next;    }}
0 0
原创粉丝点击