zoukankan      html  css  js  c++  java
  • 反转链表 II

    反转从位置 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;
        }
  • 相关阅读:
    额外的 string 操作
    vector 对象是如何增长的
    顺序容器操作
    容器库概览
    顺序容器概述
    特定容器算法
    泛型算法结构
    再探迭代器
    定制操作
    使用关联容器
  • 原文地址:https://www.cnblogs.com/deltadeblog/p/9084762.html
Copyright © 2011-2022 走看看