<习题集><LeetCode><链表><2/19/21/23/24>

目录

2. 两数相加

19. 删除链表的倒数第 N 个结点

21. 合并两个有序链表

23. 合并 K 个升序链表

24. 两两交换链表中的节点



2. 两数相加

https://leetcode.cn/problems/add-two-numbers/

    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {//head是cur链表头节点,cur用于记录相加和的链表;ListNode head = new ListNode();ListNode cur = head;//进位标志;int flag = 0;//两个用于相加的链表都走到null,结束;while(l1!=null || l2!=null){int l1Val = l1==null ? 0 : l1.val;int l2Val = l2==null ? 0 : l2.val;//计算和;int sum = l1Val+l2Val+flag;//新建节点加入cur链表中;cur.next = new ListNode(sum%10);//判断是否需要进位;if(sum>=10){flag=1;}else {flag=0;}//判断两个用于相加的链表是否走到null,没到的才继续走;if(l1!=null){l1 = l1.next;}if(l2!=null){l2 = l2.next;}//cur链表也向后移动;cur = cur.next;}//走到这里代表两个链表已经遍历完毕;//但是可能最后一次相加也产生了进位,因此在这里要判断;if(flag == 1){cur.next = new ListNode(1);}//头节点是空值,返回头节点的下一节点;return head.next;}

19. 删除链表的倒数第 N 个结点

https://leetcode.cn/problems/remove-nth-node-from-end-of-list/

    public ListNode removeNthFromEnd(ListNode head, int n) {//创建快慢指针,两个指针的next为head;ListNode fast = new ListNode();ListNode slow = new ListNode();fast.next = head;slow.next = head;//记录慢指针的头节点,用于返回;ListNode root = slow;//快指针先走n步;for (int i=n;i>0;i--){fast = fast.next;//处理n大于链表长度的情况;if(fast == null){return null;}}//依次移动快慢指针,直到快指针的next为null;//此时代表慢指针到达要删除的元素的前一位值;while (fast.next != null){fast = fast.next;slow = slow.next;}//删除下一元素;slow.next = slow.next.next;//返回;return root.next;}

21. 合并两个有序链表

https://leetcode.cn/problems/merge-two-sorted-lists/description/

    public ListNode mergeTwoLists(ListNode list1, ListNode list2) {//创建头节点和一个用于移动的节点cur;ListNode head = new ListNode(0);ListNode cur = head;//边移动,边比较节点的值,并将比较结果赋值,直到有一个链表走完;while(list1 != null && list2 != null){if(list1.val <= list2.val){cur.next = list1;list1 = list1.next;}else{cur.next = list2;list2 = list2.next;}cur = cur.next;}//判断是哪个链表走完了,把另一个链表在尾部续上;if(list1 == null){cur.next = list2;}if(list2 == null){cur.next = list1;}//返回记录的head;return head.next;}

23. 合并 K 个升序链表

https://leetcode.cn/problems/merge-k-sorted-lists/description/

    public ListNode mergeKLists(ListNode[] lists) {//建立链表;ListNode root = null;//不断将链表元素两两合并;for (ListNode list : lists) {root = mergeTwoLists(root, list);}//返回链表;return root;}public ListNode mergeTwoLists(ListNode list1, ListNode list2) {//创建头节点和一个用于移动的节点cur;ListNode head = new ListNode(0);ListNode cur = head;//边移动,边比较节点的值,并将比较结果赋值,直到有一个链表走完;while(list1 != null && list2 != null){if(list1.val <= list2.val){cur.next = list1;list1 = list1.next;}else{cur.next = list2;list2 = list2.next;}cur = cur.next;}//判断是哪个链表走完了,把另一个链表在尾部续上;if(list1 == null){cur.next = list2;}if(list2 == null){cur.next = list1;}//返回记录的head;return head.next;}

24. 两两交换链表中的节点

https://leetcode.cn/problems/swap-nodes-in-pairs/

    public ListNode swapPairs(ListNode head) {//基本思路就是站在前一个节点(后续简称0节点),向后望两个节点。//并对这两个节点做顺序调换,之后0节点向后移动;//创建移动的节点指针,这个节点指向head,这个就是一开始的0节点;ListNode cur = new ListNode();cur.next = head;//记录头节点地址,用于返回;ListNode root = cur;while(true){//没有后续节点的情况;if(cur.next == null){break;}//仍存在两个后续节点的情况;if(cur.next.next != null){//记录下一次需要调整顺序的节点;ListNode temp2 = cur.next.next.next;//调整顺序;ListNode temp1 = cur.next;cur.next = cur.next.next;cur = cur.next;cur.next = temp1;//将节点移动到下一次调整的0节点处;cur = cur.next;cur.next = temp2;}else{//只剩一个节点的情况;break;}}//代码运行到这代表,0节点之后已经没有节点或只剩一个节点;//返回记录的头节点;return root.next;}

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

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

相关文章

Go语言实现深度学习的正向传播和反向传播

文章目录 开发前言开发理论图解理论数据类型数学函数数据节点统一抽象变量数据节点常量数据节点单目运算封装双目运算封装算子节点统一抽象基础算子加法算子减法算子乘法算子除法算子指数算子对数算子正切算子正弦算子余弦算子数据流图正向传播反向传播正向训练反向训练运行示例…

船舶机电设备振动数据采集监控系统解决方案

船舶运行中&#xff0c;通常需要通过振动数据采集系统对船舶的各个机电设备运行进行监控&#xff0c;有助于在设备故障时快速预警&#xff0c;进行诊断、分析和维护&#xff0c;保证船舶机电设备正常工作&#xff0c;从而确保工作人员及船舶的安全。 船舶各种机电设备会产生大…

【模型量化】神经网络量化基础及代码学习总结

1 量化的介绍 量化是减少神经网络计算时间和能耗的最有效的方法之一。在神经网络量化中&#xff0c;权重和激活张量存储在比训练时通常使用的16-bit或32-bit更低的比特精度。当从32-bit降低到8-bit&#xff0c;存储张量的内存开销减少了4倍&#xff0c;矩阵乘法的计算成本则二…

ALNS算法中随机化重要性的评价

文章概述 本研究分析了在海上提货和交付问题中使用的ALNS元启发式算法中的随机化成分。研究者提出了简单的确定性替代方案&#xff0c;并通过实验比较了随机化和确定性成分的性能。结果表明&#xff0c;初始实现的简单确定性替代方案能够与随机化成分的性能相匹配。这项研究为…

IDEA使用git从远程仓库获取项目

将地址填入url中 然后直接clone就行

《Easy3d+Qt+VTK》学习

《Easy3dQtVTK》学习-1、编译与配置 一、编译二、配置注 一、编译 1、 资源下载&#xff1a;easy3d giuhub 2、解压缩 3、用qt打开CMakeLists.txt即可 4、点击项目&#xff0c;选择debug或者release&#xff0c;图中3处可自行选择&#xff0c;因为我的qt版本是6&#xff0c…

在linux上如何运用虚拟数据优化器VDO

本章主要介绍虚拟化数据优化器。 什么是虚拟数据优化器VDO 创建VDO设备以节约硬盘空间 16.1 了解什么是VDO VDO全称是Virtual Data Optimize&#xff08;虚拟数据优化)&#xff0c;主要是为了节省硬盘空间。 现在假设有两个文件file1和 file2&#xff0c;大小都是10G。file…

cpu 300% 爆满 内存占用不高 排查

top查询 cpu最高的PID ps -ef | grep PID 查看具体哪一个jar服务 jstack -l PID > ./jstack.log 下载/打印进程的线程栈信息 可以加信息简单分析 或进一步 查看堆内存使用情况 jmap -heap Java进程id jstack.log 信息示例 Full thread dump Java HotSpot(TM) 64-Bit Se…

横向扩展统一存储与备份服务器功能

Infortrend 更新了GS&#xff0c;GSe&#xff0c;GSe Pro统一存储系列的备份服务器功能。该功能降低数据备份成本&#xff0c;并提供灵活的备份策略。通过备份服务器功能&#xff0c;用户可以通过多种途径实现数据备份&#xff0c;包括公有云&#xff08;兼容S3&#xff09;、文…

C/C++,树算法——二叉树的插入(Insert)算法之源程序

1 文本格式 #include<iostream> using namespace std; // A BTree node class BTreeNode { int* keys; // An array of keys int t; // Minimum degree (defines the range for number of keys) BTreeNode** C; // An array of child pointers int …

dell服务器重启后显示器黑屏

1.硬件层面&#xff1a;观察主机的指示灯 &#xff08;1&#xff09;指示灯偏黄&#xff0c;硬件存在问题&#xff08;内存条有静电&#xff0c;拔出后用橡皮擦擦拭&#xff1b;或GPU松动&#xff09; a.电源指示灯黄&#xff0c;闪烁三下再闪烁一下&#xff0c;扣下主板上的纽…

Python Appium Selenium 查杀进程的实用方法

一、前置说明 在自动化过程中&#xff0c;经常需要在命令行中执行一些操作&#xff0c;比如启动应用、查杀应用等&#xff0c;因此可以封装成一个CommandExecutor来专门处理这些事情。 二、操作步骤 # cmd_util.pyimport logging import os import platform import shutil i…

Java编程中通用的正则表达式(二)

正则表达式&#xff0c;又称正则式、规则表达式、正规表达式、正则模式或简称正则&#xff0c;是一种用来匹配字符串的工具。它是一种字符串模式的表示方法&#xff0c;可以用来检索、替换和验证文本。正则表达式是一个字符串&#xff0c;它描述了一些字符的组合&#xff0c;这…

dockers安装rabbitmq

RabbitMQ: easy to use, flexible messaging and streaming — RabbitMQhttps://www.rabbitmq.com/ Downloading and Installing RabbitMQ — RabbitMQ docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.12-management 之后参照&#xff1a;dock…

高低压配电智能监控系统

高低压配电智能监控系统是一种综合运用物联网、云计算、大数据和人工智能等技术的智能化监控系统&#xff0c;主要用于对高低压配电设备进行实时监测、数据采集、故障预警和远程管理。 该系统通过安装智能传感器、智能设备、网络通讯技术等手段&#xff0c;依托电易云-智慧电力…

解决“由于找不到msvcr110.dll无法继续执行”的错误问题,一键修复msvcr110.dll丢失

当你遇到“由于找不到msvcr110.dll无法继续执行”的错误时&#xff0c;通常是因为你的电脑缺少相关的msvcr110.dll文件。如果你的电脑中缺失了msvcr110.dll文件丢失那么可以根据下面的方法尝试解决msvcr110.dll丢失的问题。 一.解决msvcr110.dll丢失的方法 使用dll修复工具 D…

学习笔记9——JUC三种量级的锁机制

学习笔记系列开头惯例发布一些寻亲消息 链接&#xff1a;https://baobeihuijia.com/bbhj/contents/3/197325.html 多线程访问共享资源冲突 临界区&#xff1a;一段代码块存在对共享资源的多线程读写操作&#xff0c;称这段代码块为临界区 竞态条件&#xff1a;多个线程在临界…

yolo目标检测+目标跟踪+车辆计数+车辆分割+车道线变更检测+速度估计

这个项目使用YOLO进行车辆检测&#xff0c;使用SORT&#xff08;简单在线实时跟踪器&#xff09;进行车辆跟踪。该项目实现了以下任务&#xff1a; 车辆计数车道分割车道变更检测速度估计将所有这些详细信息转储到CSV文件中 车辆计数是指在道路上安装相应设备&#xff0c;通过…

windows下 Tomcat启动黑框隐藏

进入到 tomcat/bin 目录下&#xff0c;找到此文件 setclasspath.bat &#xff0c;右键文本打开 找到此属性 &#xff1a; set _RUNJAVA"%JRE_HOME%\bin\java.exe"修改成以下属性&#xff0c;保存文件&#xff0c;重启启动tomcat会发现黑框不默认弹出了&#xff1a; …

使用hutool工具生成非对称加密公私密钥以及使用案例

1.导入hutool依赖 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.18</version></dependency>2.直接复制代码 package com.common.utils;import cn.hutool.core.codec.Base64; i…