【LeetCode】-Reverse Linked List II

来源:互联网 发布:优化营商环境建议 个人 编辑:程序博客网 时间:2024/06/15 04:03

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.

/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { *         val = x; *         next = null; *     } * } */public class Solution {        public ListNode reverseList( ListNode head ){ListNode newHead = null;ListNode p = null;while( head!=null ){p = head;head = head.next;p.next = newHead;newHead = p;}return newHead;}    public ListNode reverseBetween(ListNode head, int m, int n) {        ListNode newHead = new ListNode(0);newHead.next = head;ListNode p1 = newHead;while( m>1 ){p1 = p1.next;m--;}ListNode p2 = newHead;while( n>0 ){p2 = p2.next;n--;}ListNode right = p2.next;p2.next = null;p1.next = reverseList(p1.next);while( p1.next!=null ){p1 = p1.next;}p1.next = right;return newHead.next;        }}


0 0
原创粉丝点击