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;
        }
  • 相关阅读:
    第二章--MYSQL体系结构和管理
    第一章 -- MySQL简介及安装
    CentOS 7.5静默安装oracle 11g
    tomcat日志
    配置常用远程源
    mybatis与ibatis--个人总结。
    单纯的简单的ibatis
    一些缩写词
    单纯的简单的mybatis有注解
    单纯的简单的mybatis无注解
  • 原文地址:https://www.cnblogs.com/deltadeblog/p/9073856.html
Copyright © 2011-2022 走看看