LeetCode 86 Partition List 分区链表 Java

**题目:**给定一串链表的起始节点head和一个数值x,将链表中所有比X值小的节点放在比X值大的节点的前面,除此之外,要求保持原有的节点排序不变。

例子:

举例1:

输入 :head = [1,4,3,2,5,2], x = 3;

输出 :[1,2,2,4,3,5 ];

举例2:

输入:head = [2,1], x = 2

输出:[1,2]

解题思路:

创建两个链表,分别存储比x小的节点和大于等于x的节点,然后将两个链表重新拼接在一起

java 复制代码
/**
 * Definition for singly-linked list.
 * public class ListNode {
 * int val;
 * ListNode next;
 * ListNode() {}
 * ListNode(int val) { this.val = val; }
 * ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode partition(ListNode head, int x) {
        ListNode lessListHead = new ListNode(0);
        ListNode greaterListHead = new ListNode(0);
        ListNode lessListCurrect = lessListHead;
        ListNode greaterListCurrect = greaterListHead;

        //遍历head链表,将head中值比x小的节点放入小的链表中,反之放入另一个链表中
        while (head != null) {
            if (head.val < x) {
                lessListCurrect.next = head;
                lessListCurrect = lessListCurrect.next;
            } else {
                greaterListCurrect.next = head;
                greaterListCurrect = greaterListCurrect.next;
            }
            head = head.next;
        }

        //拼接两个链表
        greaterListCurrect.next = null;
        lessListCurrect.next = greaterListHead.next;

        return lessListHead.next;
    }
}
相关推荐
喵帕栞12 分钟前
C语言贪吃蛇实现
c语言·笔记·链表
isllxiao1 小时前
常见中间件漏洞(tomcat)
java·tomcat
述雾学java1 小时前
JavaWeb,Tomcat基本思想,手写Tomcat
java·tomcat·java核心基础
李白的粉1 小时前
基于springboot的地方美食分享网站(全套)
java·spring boot·毕业设计·课程设计·美食·源代码
捡田螺的小男孩1 小时前
腾讯一面:40亿QQ号,不超过1G内存,如何去重?
java·后端·面试
addaduvyhup2 小时前
从 Java 的 Spring Boot MVC 转向 Go 语言开发的差异变化
java·spring boot·go·mvc
是姜姜啊!2 小时前
MQ,RabbitMQ,MQ的好处,RabbitMQ的原理和核心组件,工作模式
java·rabbitmq·java-rabbitmq
boguboji2 小时前
用ACM模式模板刷hot100
java
Blockchina2 小时前
第八章 | 函数修饰符与访问控制模式
java·python·区块链·智能合约·solidity
计算机-秋大田2 小时前
基于Spring Boot的产业园区智慧公寓管理系统的设计与实现(LW+源码+讲解)
java·vue.js·spring boot·后端·课程设计