码迷,mamicode.com
首页 > 其他好文 > 详细

反转链表 II

时间:2018-05-24 19:59:43      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:color   node   lis   完成   ext   style   int   stat   输入   

反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。

说明:
1 ≤ m ≤ n ≤ 链表长度。

示例:

输入: 1->2->3->4->5->NULL, m = 2, n = 4
输出: 1->4->3->2->5->NULL

 

 

解题思路:


将第m个节点之后的(n-m)个节点依次插入第m个节点之前。

如示例中

将节点3插入1 、2中,1->3->2->4->5->NULL

将节点4插入1 、3中,1->4->3->2->5->NULL

定义两个指针p,q分别指向节点1与节点2,将q后面的节点插入p后面。

 

代码如下:

    public static ListNode test(ListNode head, int m, int n) {

        if (m == n) return head;

        ListNode h = new ListNode(0);
        h.next = head;
        ListNode p = h;
        for (int i=1; i<m; i++) p = p.next;
        ListNode q = p.next;

        ListNode temp;
        for (int i=m; i<n; i++) {
            temp = q.next;
            q.next = temp.next;
            temp.next = p.next;
            p.next = temp;
        }
        return h.next;
    }

 

反转链表 II

标签:color   node   lis   完成   ext   style   int   stat   输入   

原文地址:https://www.cnblogs.com/deltadeblog/p/9084762.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!