leetcode--Reverse Linked List II

来源:互联网 发布:mac怎么强制退出程序 编辑:程序博客网 时间:2024/06/16 16:06

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 ≤ mn ≤ length of list.

/** * 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(n==m) return head;        if(m>n){int t = n;n = m;m = t;}ListNode h = head;ListNode res = new ListNode(-1);ListNode pre = res;pre.next = h;int count = 1;//pre为m前的值while(h!=null&&count<m){pre = pre.next;h = h.next;count++;}ListNode cur = h;//找到m对应的值ListNode fhead = new ListNode(-1);ListNode last = cur;//第一个,然后会成为最后一个while(count<=n){pre.next = cur.next;cur.next = fhead.next;fhead.next = cur;cur = pre.next;count++;}last.next = pre.next;pre.next = fhead.next;return res.next;    }}

0 0
原创粉丝点击