zoukankan      html  css  js  c++  java
  • 分隔链表

    给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。

    你应当保留两个分区中每个节点的初始相对位置。

    示例:

    输入: head = 1->4->3->2->5->2, x = 3
    输出: 1->2->2->4->3->5

    解决思路:


    从左向右遍历链表,将节点值小于x的节点交换至链表的前端,使用tag指向前端最后一个节点。

    代码如下:

        public static ListNode partition(ListNode head, int x) {
    
            if (head==null || head.next==null) return head;
    
            ListNode h = new ListNode(0);
            h.next = head;
    
            ListNode temp;
            ListNode p = h;
            ListNode tag = h;
            while (p.next != null) {
                if (p.next.val < x) {
                    if (tag == p) {
                        p = p.next;
                        tag = tag.next;
                    }
                    else {
                        temp = p.next;
                        p.next = temp.next;
                        temp.next = tag.next;
                        tag.next = temp;
                        tag = temp;
                    }
                }
                else
                    p = p.next;
            }
            return h.next;
        }

    另一种方法是生成两个子链表,其中一个的节点值都小于x,另一个都大于等于x。

    代码如下:

        public static ListNode test(ListNode head, int x) {
    
            ListNode h1 = new ListNode(0);
            ListNode l1 = h1;
            ListNode h2 = new ListNode(0);
            ListNode l2 = h2;
    
            while(head != null) {
                if (head.val < x) {
                    l1.next = head;
                    l1 = l1.next;
                }
                else {
                    l2.next = head;
                    l2 = l2.next;
                }
                head = head.next;
            }
            l2.next = null;
            l1.next = h2.next;
            return h1.next;
        }
  • 相关阅读:
    JVM运行参数优化详细教程
    idea 代码热启动配置方法
    Spring MVC拦截器完整代码示例
    Spring MVC异常处理代码完整实例
    Python3基础语法(20190617)
    Java代码生成器Easy Code
    Mybatis @Many注解一对多关联映射
    Mybatis @One注解使用
    Mybatis @ResultMap复用@Result
    Mybatis @Result注解的使用案例
  • 原文地址:https://www.cnblogs.com/deltadeblog/p/9073856.html
Copyright © 2011-2022 走看看