【算法一则】分隔链表

题目

给你一个链表的头节点 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]
提示:链表中节点的数目在范围 [0, 200] 内
-100 <= Node.val <= 100
-200 <= x <= 200

ListNode

public class ListNode {int val;ListNode next;public ListNode() {}ListNode(int x) {val = x;next = null;}ListNode(int x, ListNode next) {val = x;this.next = next;}
}

题解

package algorithm.link;import org.junit.Test;/*** Partition** @author allens* @date 2024/4/15*/
public class Partition {/*** partition** @param head* @param x* @return*/public ListNode partition(ListNode head, int x) {ListNode left = new ListNode();ListNode right = new ListNode();ListNode leftHead = left;ListNode rightHead = right;while (head != null) {if (head.val < x) {left.next = head;left = left.next;} else {right.next = head;right = right.next;}head = head.next;}right.next = null;left.next = rightHead.next;return leftHead.next;}@Testpublic void testMain () {ListNode head = new ListNode(1, new ListNode(4, new ListNode(3, new ListNode(2, new ListNode(5, new ListNode(2))))));ListNode partition = partition(head, 3);print(partition);System.out.println(partition);}private void print(ListNode partition) {while (partition != null) {System.out.print(partition.val + " ");partition = partition.next;}}}

在这里插入图片描述

    1. 定义两个链表 left 和 right,分别存储小于 x 和大于等于 x 的节点
    1. 遍历链表,将小于 x 的节点放到 left 链表中,大于等于 x 的节点放到 right 链表中
    1. 将 left 和 right 链表连接起来
    1. 返回 left 链表

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/623152.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

iOS修改外部符号指针地址—fishhook原理

上篇文章解释了外部符号加载的原理&#xff0c;知道了外部函数地址最后都保存在__DATA_CONST,__got或__DATA,__lay_symbol_ptr。 因此我们如果想要hook外部函数&#xff0c;只需要在启动后修改这两个段内的值就行。 接下来就是怎么找到某个外部符号在__DATA_CONST,__got或__DA…

Lua语法(一)

参考链接: 系列链接: Lua语法(一) 系列链接: Lua语法(二) 系列链接: Lua语法(三)——元表与元方法 系列链接: Lua语法(四)——协程 系列链接: Lua语法(五)——垃圾回收 系列链接: Lua语法(六)——面相对象编程 Lua语法目录 简介正文语言基础一、语法规范二、类型和值三、数值运…

stack使用业务口组建和配置堆叠

一、定义成员编号&#xff08;成员ID槽位号&#xff0c;默认为0&#xff09; slot 槽位号&#xff08;也是成员ID号&#xff09;&#xff0c;如gi0/0/3&#xff0c;第1个0为槽位号&#xff0c;第2个0为子卡号&#xff0c;第3个是接口号。 [Switch2] stack slot 0 renumber 1 …

OV SSL证书申请

随着网络安全的需求度日益提高&#xff0c;https证书也成为了当下最受欢迎的数字证书之一&#xff0c;主要是用于保护网站和应用程序的安全&#xff0c;并提升用户对网站的信任度&#xff0c;且只有企业或组织才可申请。 OV SSL证书全称Organization Validation SSL(组织验证性…

CFDPro雾化仿真 | 专为雾化过程与液滴属性研究设计的仿真模块

雾化是一种将液体转化为微小液滴的技术&#xff0c;通过不同的雾化方法实现液体的高效分散、蒸发、燃烧、吸附或沉积等目的。 雾化仿真在多个工业领域中具有极其重要的地位。无论是内燃机中燃油的高效燃烧&#xff0c;还是化工生产中的喷雾干燥&#xff0c;以及农业喷雾中农药…

AI网关助力边缘物联网

随着人工智能技术的迅猛发展&#xff0c;AI网关作为通往智能未来的桥梁&#xff0c;正逐渐被人们所认识和重视。AI网关是一种智能设备&#xff0c;它连接了各种智能终端设备&#xff0c;促进它们之间的交流和协同工作。在这个信息化、智能化时代&#xff0c;AI网关的作用愈发凸…

【数据结构与算法】递归

To Iterate is Human,to Recurse,Divine.(人理解迭代&#xff0c;神理解递归) ——L.Peter Deutsch 递归&#xff0c;在数学与计算机科学中&#xff0c;是指在方法的定义中使用方法自身。也就是说&#xff0c;递归算法是一种直接或间接调用自身方法的算法。其中&#xff0c;直…

MySql 安装,小白也可以学会成功安装的保姆级教程

MySql 安装 文章目录 MySql 安装1.Mysql下载1.1 访问下载链接1.2 选择合适版本1.3 下载安装包 2.MySql安装3.安装成功检测验证3.1 mysql自带控制台验证3.2 win系统控制台进入验证 4. mysql 配置path5. navicat 连接 mysql 1.Mysql下载 1.1 访问下载链接 MySQL Downloads 这里…

Spring Boot | SpringBoot对 “SpringMVC“的 “整合支持“、SpringMVC“功能拓展实现“

目录: SpringMVC 的 “整合支持” ( 引入"Web依赖启动器"&#xff0c;几乎可以在无任何额外的配置的情况下进行"Web开发")1.SpringMVC "自动配置" 介绍 ( 引入Web依赖启动器"后&#xff0c;SpringBoot会自动进行一些“自动配置”&#xff0…

eigen使用教程

一 问题集锦 1 fatal error: Eigen/Dense: No such file or directory ubuntu c++使用eigen提示"fatal error: Eigen/Dense: No such file or directory"的解决办法_: fatal error: eigen3/eigen/dense: 没有那个文件或目录 #incl-CSDN博客https://blog.csdn.net/c…

[Collection与数据结构] 二叉树(一):二叉树的性质与基本操作

1. 树形结构 1.1 概念1 (了解) 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的。它具有以下的特点&#…

使用剧本批量部署rsync服务端实战

目录 1、实战部署 编写剧本 执行剧本测试&#xff01;&#xff01;&#xff01; 2、部署方式对比 1、实战部署 编写剧本 执行剧本测试&#xff01;&#xff01;&#xff01; 2、部署方式对比 ansible模块实战-部署rsync服务端-CSDN博客 ansible临时命令和playbook区别 …