LeetCode 热题100(七)【链表】(2)

目录
7.6合并两个有序链表(简单)
7.7两数相加(中等)
7.8删除链表的倒数第N个节点(中等)
7.9两两交换链表中的节点(中等)
7.10k个一组翻转链表(困难)
7.6合并两个有序链表(简单)
题目描述:leetcode链接 21.合并两个有序链表
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例 1:
输入:l1 = [1,2,4], l2 = [1,3,4] 输出:[1,1,2,3,4,4]示例 2:
输入:l1 = [], l2 = [] 输出:[]示例 3:
输入:l1 = [], l2 = [0] 输出:[0]
思路:
1.当list1为空链表,直接返回list2;当list2为空链表,直接返回list1
2.当list1、list2均为非空链表,比较list1 -> val和list2 -> val的大小
如果list1 -> val > list2 -> val,则list2 -> next = mergeTwoLists(list1, list2 -> next);
否则list1 -> next = mergeTwoLists(list1 -> next, list2)
举例说明:

代码:
class Solution {
public:ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {if (!list1) return list2;else if (!list2) return list1;else if (list1 -> val > list2 -> val) {list2 -> next = mergeTwoLists(list1, list2 -> next);return list2;}else {list1 -> next = mergeTwoLists(list1 -> next, list2);return list1;}}
};
7.7两数相加(中等)
题目描述:leetcode链接 2.两数相加
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
示例 1:
输入:l1 = [2,4,3], l2 = [5,6,4] 输出:[7,0,8] 解释:342 + 465 = 807.示例 2:
输入:l1 = [0], l2 = [0] 输出:[0]示例 3:
输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9] 输出:[8,9,9,9,0,0,0,1]
思路:

1.add用于存储进位,新建哑结点ListNode* dummy = new ListNode(0)用于存储相加后的结果
ListNode* cur = dummy
2.只要l1 || l2 || add满足条件
int n1 = l1 ? l1 -> val : 0;(如果l1不是nullptr,n1=l1 -> val,否则n1=0)
int n2 = l2 ? l2 -> val : 0;(如果l2不是nullptr,n2=l2 -> val,否则n2=0)
int sum = n1 + n2 + add;
sum%10:存储结果
add = sum/10:更新进位结果
3.移动至链表的下一节点,重复第2步
cur = cur -> next;
if (l1) l1 = l1 -> next;
if (l2) l2 = l2 -> next;
4.最后返回dummy -> next
举例说明:
见上图
代码:
class Solution {
public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {int add = 0;ListNode* dummy = new ListNode(0);ListNode* cur = dummy;while (l1 || l2 || add) {int n1 = l1 ? l1 -> val : 0;int n2 = l2 ? l2 -> val : 0;int sum = n1 + n2 + add;cur -> next = new ListNode(sum % 10);cur = cur -> next;add = sum / 10;if (l1) l1 = l1 -> next;if (l2) l2 = l2 -> next;}ListNode* ans = dummy -> next;delete dummy;return ans;}
};
7.8删除链表的倒数第N个节点(中等)
题目描述:leetcode链接 19. 删除链表的倒数第N个节点
给你一个链表,删除链表的倒数第
n个结点,并且返回链表的头结点。示例 1:
输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5]示例 2:
输入:head = [1], n = 1 输出:[]示例 3:
输入:head = [1,2], n = 1 输出:[1]
思路:

1.新建哑结点ListNode* dummy指向链表的头节点
2.利用快慢指针fast和slow,均从dummy开始,首先令fast向前走N步
3. fast和slow同步向前移动,当fast到达链表末端时,slow到达待删除节点的上一个节点
4.令slow -> next = slow -> next -> next,返回dummy -> next
举例说明:
见上图
代码:
class Solution {
public:ListNode* removeNthFromEnd(ListNode* head, int n) {ListNode* dummy = new ListNode(0);dummy -> next = head;ListNode* fast = dummy;ListNode* slow = dummy;while (n--) {if (fast -> next) fast = fast -> next;else return nullptr;}while (fast -> next) {fast = fast -> next;slow = slow -> next;}slow -> next = slow -> next -> next;return dummy -> next;}
};
7.9两两交换链表中的节点(中等)
题目描述:leetcode链接 24. 两两交换链表中的节点
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。
示例 1:
输入:head = [1,2,3,4] 输出:[2,1,4,3]示例 2:
输入:head = [] 输出:[]示例 3:
输入:head = [1] 输出:[1]
思路:


举例说明:
见上图
代码:
class Solution {
public:ListNode* swapPairs(ListNode* head) {ListNode* dummy = new ListNode(0);dummy -> next = head;ListNode* cur = dummy;while (cur -> next && cur -> next -> next) {ListNode* node1 = cur -> next;ListNode* node2 = cur -> next -> next;cur -> next = node2;node1 -> next = node2 -> next;node2 -> next = node1;cur = node1;}return dummy -> next;}
};
7.10k个一组翻转链表(困难)
题目描述:leetcode链接 25. k个一组翻转链表
给你链表的头节点
head,每k个节点一组进行翻转,请你返回修改后的链表。
k是一个正整数,它的值小于或等于链表的长度。如果节点总数不是k的整数倍,那么请将最后剩余的节点保持原有顺序。你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。
示例 1:
输入:head = [1,2,3,4,5], k = 2 输出:[2,1,4,3,5]示例 2:
输入:head = [1,2,3,4,5], k = 3 输出:[3,2,1,4,5]
思路:
1.遍历链表,统计节点个数为n
2.每k个节点翻转一次链表
3.对已翻转的k个节点与前后节点之间的关系进行更新
举例说明:

每k个节点翻转一次:参考7.2反转链表
已翻转的k个节点与前后节点的关系更新:参考7.9两两交换链表中的节点
代码:
class Solution {
public:ListNode* reverseKGroup(ListNode* head, int k) {int n = 0;ListNode* dummy = new ListNode(0);dummy -> next = head;ListNode* count = head;while (count) {n++;count = count -> next;} ListNode* pre = nullptr;ListNode* cur = head;ListNode* p0 = dummy;for (; n >= k; n -= k) {for (int i = 0; i < k; i++) {ListNode* temp = cur -> next;cur -> next = pre;pre = cur;cur = temp;}ListNode* temp2 = p0 -> next;p0 -> next -> next = cur;p0 -> next = pre;p0 = temp2;}return dummy -> next;}
};
相关文章:
LeetCode 热题100(七)【链表】(2)
目录 7.6合并两个有序链表(简单) 7.7两数相加(中等) 7.8删除链表的倒数第N个节点(中等) 7.9两两交换链表中的节点(中等) 7.10k个一组翻转链表(困难) 7.6…...
计算机网络 TCP/IP体系 网络层
一. 网络层的基本概念 网络层主要负责将数据从源端主机发送到目的端主机。在这一过程中,网络层要解决的关键问题是数据包的路由选择,即确定数据包通过互联网的最佳路径。 1.1 网络层的信息类型 数据包:这是网络层传输的主要形式,…...
迈入国际舞台,AORO M8防爆手机获国际IECEx、欧盟ATEX防爆认证
近日,深圳市遨游通讯设备有限公司(以下简称“遨游通讯”)旗下5G防爆手机——AORO M8,通过了CSA集团的严格测试和评估,荣获国际IECEx及欧盟ATEX防爆认证证书。2024年11月5日,CSA集团和遨游通讯双方领导在遨游…...
实习作假:阿里健康实习做了RABC中台,还优化了短信发送流程
最近有二本同学说:“大拿老师,能帮忙看下简历吗?” 如果是从面试官的角度来看,这个同学的实习简历是很虚假的。 但是我们一直强调的是:校招的实习简历是不能出现明显的虚假。 首先,你去公司做事情&#…...
Unity中IK动画与布偶死亡动画切换的实现
在Unity游戏开发中,Inverse Kinematics(IK)是创建逼真角色动画的强大工具。同时,能够在适当的时候切换到布偶物理状态来实现死亡动画等效果,可以极大地增强游戏的视觉体验。本文将详细介绍如何在Unity中利用IK实现常规…...
java导出word文件(手绘)
文章目录 代码细节效果图参考资料 代码细节 使用的hutool的WordUtil,WordUtil对poi进行封装,但是这一块的官方封装的很少,很多细节都没有。代码中是常见的绘制段落,标题、表格等常用api Word07Writer writer WordUtil.getWriter(…...
ssm070基于SSM框架的校园代购服务订单管理系统的设计与实现+vue(论文+源码)_kaic
毕业设计 题 目: 校园代购服务订单管理系统 作 者: 学 号: 所属学院: 专业年级: 学校导师: 职 称: 班级导师: 职 称: 完成时间…...
Java项目实战II基于Spring Boot的秒杀系统设计与实现(开发文档+数据库+源码)
目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。 一、前言 在互联网电商蓬勃发展的今天࿰…...
FastAPI —— 请求参数验证
1.hello world 给后端船数据 hello world 接口给后端传 COVID-19 感染数据_高性能 FastAPI 框架入门精讲-慕课网 #!/usr/bin/python3 # -*- coding:utf-8 -*- # __author__ __Jack__from typing import Optionalfrom fastapi import FastAPI from pydantic import BaseModel…...
第七篇: BigQuery中的复杂SQL查询
BigQuery中的复杂SQL查询 背景与目标 在数据分析中,我们通常需要从多个数据源中获取信息,以便进行深入的分析。这时,BigQuery提供的JOIN、UNION和子查询等复杂SQL语句非常实用。本文将以Google BigQuery的公共数据集为例,介绍如何…...
【SQL实验】高级查询(难点.三)含附加数据库操作
完整代码在文章末尾【代码是自己的解答,并非标准答案,也有可能写错,文中可能会有不准确或待完善之处,恳请各位读者不吝批评指正,共同促进学习交流】 将素材中的“学生管理”数据库附加到SQL SERVER中,完成以…...
qt QFileSystemModel详解
1、概述 QFileSystemModel是Qt框架中的一个关键类,它继承自QAbstractItemModel,专门用于在Qt应用程序中展示文件系统的数据。这个模型提供了一个方便的接口,使得开发者可以轻松地在应用程序中集成文件和目录的树形结构,并通过视图…...
element plus中修改el-table的样式
文章目录 前情提要相关环境package.jsonvue代码结果 方式一直接看代码 方式二直接看代码 前情提要 因为项目中用到el-table的时候,需要将el-table表格的样式进行修改,将整个表格的背景颜色从白色变成透明,使得表格变得透明之后,展…...
深入理解封装与接口:Java程序设计的核心思想与最佳实践
目录 一、封装的优点 二、接口与默认方法 三、总结 在面向对象编程(OOP)中,封装(Encapsulation)是一个核心概念,Java对其进行了良好的支持。封装不仅有助于提高代码的安全性,还能够增强代码的…...
linux 下调试 mpu6050 三轴加速度
供自己备忘; 1. 参考资料: b 站视频 https://www.bilibili.com/video/BV1cL4y1x7FA/?spm_id_from333.337.search-card.all.click&vd_sourced7a07b8689c9e646f0214227c06f304c csdn 其它博客 https://blog.csdn.net/qq_65198598/article/detail…...
C语言心型代码解析
方法一 心型极坐标方程 爱心代码你真的理解吗 笛卡尔的心型公式: for (y 1.5; y > -1.5; y - 0.1) for (x -1.5; x < 1.5; x 0.05) 代码里面用了二个for循环,第一个代表y轴,第二个代表x轴 二个增加的单位不同,能使得…...
【LeetCode】【算法】647. 回文子串
LeetCode 647.回文子串 题目描述 给你一个字符串s,请你统计并返回这个字符串中回文子串的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串是字符串中的由连续字符组成的一个序列。 思路 思路:中心拓展法 中心拓展法的意思是说…...
介绍6种常见的基于知识图谱推荐算法的类型和各自的优缺点
基于知识图谱的推荐算法有多种,每种算法各有其优点和缺点。下面是一些常见的基于知识图谱的推荐算法及其分析: 基于邻域的协同过滤(Collaborative Filtering) 描述:通过分析用户之间的相似性或项目之间的相似性来进行…...
使用python拟合二元曲线系数
python import numpy as np import pandas as pd注: xlsx 表格中 有 压力P,流量值Q,温度值 K; df pd.read_excel("./i100-10000slm.xlsx",usecols[p1,molboxQm,Dek]) #print(df.head())#column_data df[p1] # 获取行数…...
go 集成viper 配置管理
安装viper go get github.com/spf13/viper 配置文件 读取配置文件 package confimport ("fmt""github.com/spf13/viper" )func Properties() {viper.SetConfigName("application")viper.SetConfigType("yml")viper.AddConfigPath(&q…...
5G网络架构:核心网、接入网的组成与工作原理
5G网络架构:核心网、接入网的组成与工作原理📝 本章学习目标:本章探讨网络编程,帮助读者掌握网络应用开发技能。通过本章学习,你将全面掌握"5G网络架构:核心网、接入网的组成与工作原理"这一核心…...
Windows苹果设备驱动终极指南:3分钟搞定iPhone/iPad连接难题
Windows苹果设备驱动终极指南:3分钟搞定iPhone/iPad连接难题 【免费下载链接】Apple-Mobile-Drivers-Installer Powershell script to easily install Apple USB and Mobile Device Ethernet (USB Tethering) drivers on Windows! 项目地址: https://gitcode.com/…...
论文写作“智多星”:书匠策AI,开启期刊论文新纪元
在学术的广袤天地里,论文写作宛如一场充满挑战的冒险之旅。尤其是期刊论文,它不仅是学者研究成果的集中展现,更是学术交流与进步的重要桥梁。但面对选题迷茫、资料繁杂、结构搭建困难等诸多难题,许多学者常常感到力不从心。别担心…...
libcimbar视觉传输工具实战指南:跨设备无网络数据传输解决方案
libcimbar视觉传输工具实战指南:跨设备无网络数据传输解决方案 【免费下载链接】libcimbar Optimized implementation for color-icon-matrix barcodes 项目地址: https://gitcode.com/GitHub_Trending/li/libcimbar 一、核心价值解析:突破网络限…...
深入解析LCD面板Gamma校准:从原理到自动化调试实践
1. Gamma校准的前世今生:从CRT到LCD的视觉革命 第一次接触Gamma校准时,我正对着两台显示器发愣——同样的设计稿在CRT显示器上色彩饱满,到了LCD屏幕却像蒙了层灰。这个困扰无数设计师的问题,背后正是Gamma值在作祟。早年的CRT显示…...
利用快马ai快速原型开发openclaw类网页数据抓取chrome插件
利用AI快速原型开发OpenClaw类网页数据抓取Chrome插件 最近在做一个数据采集的小项目,需要从电商网站抓取商品信息。传统做法要手动写各种XPath和CSS选择器,费时费力。后来发现用InsCode(快马)平台的AI辅助开发,可以快速实现一个类似OpenCla…...
javaweb高校学生宿舍管理系统的设计与实现
目录同行可拿货,招校园代理 ,本人源头供货商高校学生宿舍管理系统功能分析学生信息管理模块宿舍分配管理模块费用管理模块报修与维修管理模块访客与门禁管理模块卫生检查与评分模块系统管理模块技术实现要点项目技术支持源码获取详细视频演示 :文章底部获取博主联系…...
如何使用Photon光影包提升Minecraft视觉体验
如何使用Photon光影包提升Minecraft视觉体验 【免费下载链接】photon A gameplay-focused shader pack for Minecraft 项目地址: https://gitcode.com/gh_mirrors/photon3/photon Photon光影包是一款专注于游戏体验的Minecraft光影解决方案,通过先进的光照算…...
React Scroll Parallax核心组件详解:Parallax、ParallaxBanner和ParallaxProvider
React Scroll Parallax核心组件详解:Parallax、ParallaxBanner和ParallaxProvider 【免费下载链接】react-scroll-parallax 🔮 React hooks and components to create parallax scroll effects for banners, images or any other DOM elements. 项目地…...
如何用开源工具实现专业级图像修复与纹理合成?揭秘GIMP Resynthesizer的技术奥秘
如何用开源工具实现专业级图像修复与纹理合成?揭秘GIMP Resynthesizer的技术奥秘 【免费下载链接】resynthesizer Suite of gimp plugins for texture synthesis 项目地址: https://gitcode.com/gh_mirrors/re/resynthesizer 在数字图像处理领域,…...






