当前位置: 首页 > news >正文

Java中实现双向链表

一、目标

        最近项目中实现双向链表,同时转为满二叉树。

二、代码

        用java实现双向链表的代码如下:

class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int x) { val = x; }
}public class FullBinaryTree {public TreeNode createTree(int[] nums, int i) {if (i >= nums.length || nums[i] == -1) {return null;}TreeNode root = new TreeNode(nums[i]);root.left = createTree(nums, 2 * i + 1);root.right = createTree(nums, 2 * i + 2);return root;}public static int binarySearch(int[] nums, int target) {int left = 0;int right = nums.length - 1;while (left <= right) {int mid = left + (right - left) / 2;if (nums[mid] == target) {return mid;} else if (nums[mid] < target) {left = mid + 1;} else {right = mid - 1;}}return -1;}
}class ListNode {int val;ListNode prev;ListNode next;ListNode(int x) { val = x; }
}public class DoublyLinkedList {public ListNode createList(int[] nums) {ListNode dummy = new ListNode(-1);ListNode prev = dummy;for (int num : nums) {ListNode node = new ListNode(num);prev.next = node;node.prev = prev;prev = node;}return dummy.next;}public int find(ListNode head, int target) {ListNode curr = head;while (curr != null) {if (curr.val == target) {return curr.val;}curr = curr.next;}return -1;}public ListNode insert(ListNode head, int pos, int val) {ListNode dummy = new ListNode(-1);dummy.next = head;ListNode curr = dummy;while (pos > 0) {curr = curr.next;pos--;}ListNode node = new ListNode(val);node.prev = curr;node.next = curr.next;if (curr.next != null) {curr.next.prev = node;}curr.next = node;return dummy.next;}public ListNode modify(ListNode head, int pos, int val) {ListNode curr = head;while (pos > 0) {curr = curr.next;pos--;}curr.val = val;return head;}public ListNode delete(ListNode head, int pos) {ListNode dummy = new ListNode(-1);dummy.next = head;ListNode curr = dummy;while (pos > 0) {curr = curr.next;pos--;}ListNode node = curr.next;if (node.next != null) {node.next.prev = curr;}curr.next = node.next;return dummy.next;}public TreeNode toFullBinaryTree(ListNode head) {if (head == null) {return null;}List<Integer> nums = new ArrayList<>();ListNode curr = head;while (curr != null) {nums.add(curr.val);curr = curr.next;}int[] arr = nums.stream().mapToInt(Integer::intValue).toArray();FullBinaryTree fbTree = new FullBinaryTree();return fbTree.createTree(arr, 0);}
}

在以上代码中,ListNode类表示双向链表中的节点,包含一个值和前后两个节点。DoublyLinkedList类中定义了六个方法,分别为:

  • createList方法用于根据给定的整数数组创建一个双向链表;
  • find方法用于在双向链表中查找目标元素,并返回其值;
  • insert方法用于在双向链表中插入新节点;
  • modify方法用于修改双向链表中的节点值;
  • delete方法用于删除双向链表中的节点;
  • toFullBinaryTree方法用于将双向链表转换为一棵满二叉树,并返回根节点。

具体实现见代码。

相关文章:

Java中实现双向链表

一、目标 最近项目中实现双向链表&#xff0c;同时转为满二叉树。 二、代码 用java实现双向链表的代码如下&#xff1a; class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int x) { val x; } }public class FullBinaryTree {public TreeNode createTree(int[…...

【DevOps实战之k8s】使用Prometheus和Grafana监控K8S集群

【DevOps实战之k8s】使用Prometheus和Grafana监控K8S集群 目录 【DevOps实战之k8s】使用Prometheus和Grafana监控K8S集群系统架构Kubernetes集群指标抓取指标可视化警告PromQL示例按命名空间统计集群中的Pod数按命名空间重启Pod未就绪的PodCPU过度使用Memory过度使用健康的集群…...

【读论文】【精读】3D Gaussian Splatting for Real-Time Radiance Field Rendering

文章目录 1. What&#xff1a;2. Why&#xff1a;3. How&#xff1a;3.1 Real-time rendering3.2 Adaptive Control of Gaussians3.3 Differentiable 3D Gaussian splatting 4. Self-thoughts 1. What&#xff1a; What kind of thing is this article going to do (from the a…...

JVM理解学习

参考视频 JVM架构总览图 程序计数器 程序计数器&#xff0c;物理上用寄存器实现。 作用&#xff1a; 记住下一条JVM指令的执行地址 特点&#xff1a; 1 是线程私有的&#xff0c;随着线程的创建而创建&#xff0c;随着线程的消息而消息 2 是一小块内存 3 唯一不会内存溢出的地方…...

使用 Ruby 或 Python 在文件中查找

对于经常使用爬虫的我来说&#xff0c;在大多数文本编辑器都会有“在文件中查找”功能&#xff0c;主要是方便快捷的查找自己说需要的内容&#xff0c;那我有咩有可能用Ruby 或 Python实现类似的查找功能&#xff1f;这些功能又能怎么实现&#xff1f; 问题背景 许多流行的文本…...

python实现冒泡排序

冒泡排序是一种简单的排序算法&#xff0c;它重复地遍历要排序的数列&#xff0c;一次比较两个元素&#xff0c;如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换&#xff0c;也就是说该数列已经排序完成。 以下是用Python实现冒泡排序的代…...

大数据开发(HBase面试真题-卷二)

大数据开发&#xff08;HBase面试真题&#xff09; 1、HBase读写数据流程&#xff1f;2、HBase的读写缓存&#xff1f;3、在删除HBase中的一个数据的时候&#xff0c;它什么时候真正的进行删除呢&#xff1f;4、HBase的一个region由哪些东西组成&#xff1f;5、HBase的rowkey为…...

基于springboot+vue的线上教育系统(源码+论文)

目录 前言 一、功能设计 二、功能实现 三、库表设计 四、论文 前言 现在大家的生活方式正在被计算机的发展慢慢改变着&#xff0c;学习方式也逐渐由书本走向荧幕,我认为这并不是不能避免的,但说实话,现在的生活方式与以往相比有太大的改变&#xff0c;人们的娱乐方式不仅仅…...

01-shell的自学课-基础变量学习

一、echo变量的一个坑 声明【临时变量】&#xff0c;然后打印出来&#xff1b;&#xff08;拓展&#xff1a;env是linux的全局变量&#xff09; [rootgong ~]# xinjizhiwashell [rootgong ~]# echo $xinjizhiwa shell [rootgong ~]# echo $xinjizhiwa-haha shell-haha [rootgo…...

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Span)

作为Text组件的子组件&#xff0c;用于显示行内文本的组件。 说明&#xff1a; 该组件从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 该组件从API Version 10开始支持继承父组件Text的属性&#xff0c;即如果子组件未设置…...

前端框架的演进之路:从静态网页到现代交互体验的探索

前端框架的发展史 随着互联网的快速发展&#xff0c;前端技术也在不断进步&#xff0c;前端框架作为前端开发的重要工具&#xff0c;经历了从简单到复杂、从单一到多元的演变过程。本文将回顾前端框架的发展史&#xff0c;探讨其变迁背后的原因和趋势。 一、静态网页时代 在…...

在Linux/Ubuntu/Debian中设置字体

下载字体。 下载你喜欢的字体&#xff0c;双击并安装。 之后更新字体缓存&#xff1a; fc-cache -f -v安装 GNOME 调整。 GNOME Tweaks 是一个工具&#xff0c;允许你自定义 GNOME 桌面环境的各个方面&#xff0c;包括字体。 如果你还没有安装 GNOME Tweaks&#xff1a; …...

Python 常用内置函数,及实例演示

Python的内置函数非常强大&#xff0c;可以帮助你完成各种任务。以下是20个非常有用的Python内置函数及其使用实例&#xff1a; 1. abs() 返回数字的绝对值。 print(abs(-5)) # 输出&#xff1a;52. all() 如果迭代器的所有元素都为真&#xff08;或迭代器为空&#xff09…...

C++标准输入输出和名字空间

C标准输入输出和名字空间 标准输入输出 在C中&#xff0c;标准输入输出&#xff08;I/O&#xff09;是通过标准库中的iostream库来实现的&#xff0c;它提供了一套流&#xff08;stream&#xff09;抽象来进行数据的输入和输出操作。这套流抽象包括输入流用于读取数据&#x…...

hive逗号分割行列转换

select * from ( select back_receipt_nos,order_no,reject_no from ods_oneplus.ods_us_wms_reject_order_match_all_d where order_no 10150501385980001 ) t1 lateral view explode(split(t1.back_receipt_nos, ,)) t as back_receipt_no where 1 1;...

Jenkins插件Parameterized Scheduler用法

Jenkins定时触发构建的同时设定参数。可以根据不同的定时构建器设置不同参数或环境变量的值。可以设置多个参数。并结合when控制stage流程的执行。结合when和triggeredBy区分定时构建的stage和手动执行的stage。 目录 什么是Parameterized Scheduler&#xff1f;如何配置实现呢…...

西门子S7.NET通信库【读】操作详解

在使用西门子PLC进行工业自动化控制的过程中&#xff0c;经常需要与PLC进行数据交换。S7.NET是一款广泛应用于.NET平台的西门子PLC通信库&#xff0c;它为开发者提供了一系列的API函数&#xff0c;以便在C#、VB.NET等.NET语言中轻松实现与西门子PLC的数据交互。本文将详细介绍如…...

Qt/C++音视频开发69-保存监控pcm音频数据到mp4文件/监控录像/录像存储和回放/264/265/aac/pcm等

一、前言 用ffmpeg做音视频保存到mp4文件&#xff0c;都会遇到一个问题&#xff0c;尤其是在视频监控行业&#xff0c;就是监控摄像头设置的音频是PCM/G711A/G711U&#xff0c;解码后对应的格式是pcm_s16be/pcm_alaw/pcm_mulaw&#xff0c;将这个原始的音频流保存到mp4文件是会…...

闲聊Swift的枚举关联值

闲聊Swift的枚举关联值 枚举&#xff0c;字面上理解&#xff0c;就是把东西一件件列出来。 在许多计算机语言中&#xff0c;枚举都是一种重要的数据结构。使用枚举可以使代码更简洁&#xff0c;语义性更强&#xff0c;更加健壮。 Swift语言也不例外。但和其他语言相比&#xf…...

抓取Instagram数据:Fizzler库带您进入C#爬虫程序的世界

引言 在当今数字化的世界中&#xff0c;数据是无价之宝。社交媒体平台如Instagram成为了用户分享照片、视频和故事的热门场所。作为开发人员&#xff0c;我们可以利用爬虫技术来抓取这些平台上的数据&#xff0c;进行分析、挖掘和应用。本文将介绍如何使用C#编写一个简单的Ins…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

ip子接口配置及删除

配置永久生效的子接口&#xff0c;2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比

在机器学习的回归分析中&#xff0c;损失函数的选择对模型性能具有决定性影响。均方误差&#xff08;MSE&#xff09;作为经典的损失函数&#xff0c;在处理干净数据时表现优异&#xff0c;但在面对包含异常值的噪声数据时&#xff0c;其对大误差的二次惩罚机制往往导致模型参数…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件&#xff0c;我的文件路径是/etc/mysql/my.cnf&#xff0c;有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...