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

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合并两个有序链表&#xff08;简单&#xff09; 7.7两数相加&#xff08;中等&#xff09; 7.8删除链表的倒数第N个节点&#xff08;中等&#xff09; 7.9两两交换链表中的节点&#xff08;中等&#xff09; 7.10k个一组翻转链表&#xff08;困难&#xff09; 7.6…...

计算机网络 TCP/IP体系 网络层

一. 网络层的基本概念 网络层主要负责将数据从源端主机发送到目的端主机。在这一过程中&#xff0c;网络层要解决的关键问题是数据包的路由选择&#xff0c;即确定数据包通过互联网的最佳路径。 1.1 网络层的信息类型 数据包&#xff1a;这是网络层传输的主要形式&#xff0c…...

迈入国际舞台,AORO M8防爆手机获国际IECEx、欧盟ATEX防爆认证

近日&#xff0c;深圳市遨游通讯设备有限公司&#xff08;以下简称“遨游通讯”&#xff09;旗下5G防爆手机——AORO M8&#xff0c;通过了CSA集团的严格测试和评估&#xff0c;荣获国际IECEx及欧盟ATEX防爆认证证书。2024年11月5日&#xff0c;CSA集团和遨游通讯双方领导在遨游…...

实习作假:阿里健康实习做了RABC中台,还优化了短信发送流程

最近有二本同学说&#xff1a;“大拿老师&#xff0c;能帮忙看下简历吗&#xff1f;” 如果是从面试官的角度来看&#xff0c;这个同学的实习简历是很虚假的。 但是我们一直强调的是&#xff1a;校招的实习简历是不能出现明显的虚假。 首先&#xff0c;你去公司做事情&#…...

Unity中IK动画与布偶死亡动画切换的实现

在Unity游戏开发中&#xff0c;Inverse Kinematics&#xff08;IK&#xff09;是创建逼真角色动画的强大工具。同时&#xff0c;能够在适当的时候切换到布偶物理状态来实现死亡动画等效果&#xff0c;可以极大地增强游戏的视觉体验。本文将详细介绍如何在Unity中利用IK实现常规…...

java导出word文件(手绘)

文章目录 代码细节效果图参考资料 代码细节 使用的hutool的WordUtil&#xff0c;WordUtil对poi进行封装&#xff0c;但是这一块的官方封装的很少&#xff0c;很多细节都没有。代码中是常见的绘制段落&#xff0c;标题、表格等常用api Word07Writer writer WordUtil.getWriter(…...

ssm070基于SSM框架的校园代购服务订单管理系统的设计与实现+vue(论文+源码)_kaic

毕业设计 题 目&#xff1a; 校园代购服务订单管理系统 作 者&#xff1a; 学 号&#xff1a; 所属学院&#xff1a; 专业年级&#xff1a; 学校导师&#xff1a; 职 称&#xff1a; 班级导师&#xff1a; 职 称&#xff1a; 完成时间…...

Java项目实战II基于Spring Boot的秒杀系统设计与实现(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 一、前言 在互联网电商蓬勃发展的今天&#xff0…...

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查询 背景与目标 在数据分析中&#xff0c;我们通常需要从多个数据源中获取信息&#xff0c;以便进行深入的分析。这时&#xff0c;BigQuery提供的JOIN、UNION和子查询等复杂SQL语句非常实用。本文将以Google BigQuery的公共数据集为例&#xff0c;介绍如何…...

【SQL实验】高级查询(难点.三)含附加数据库操作

完整代码在文章末尾【代码是自己的解答&#xff0c;并非标准答案&#xff0c;也有可能写错&#xff0c;文中可能会有不准确或待完善之处&#xff0c;恳请各位读者不吝批评指正&#xff0c;共同促进学习交流】 将素材中的“学生管理”数据库附加到SQL SERVER中&#xff0c;完成以…...

qt QFileSystemModel详解

1、概述 QFileSystemModel是Qt框架中的一个关键类&#xff0c;它继承自QAbstractItemModel&#xff0c;专门用于在Qt应用程序中展示文件系统的数据。这个模型提供了一个方便的接口&#xff0c;使得开发者可以轻松地在应用程序中集成文件和目录的树形结构&#xff0c;并通过视图…...

element plus中修改el-table的样式

文章目录 前情提要相关环境package.jsonvue代码结果 方式一直接看代码 方式二直接看代码 前情提要 因为项目中用到el-table的时候&#xff0c;需要将el-table表格的样式进行修改&#xff0c;将整个表格的背景颜色从白色变成透明&#xff0c;使得表格变得透明之后&#xff0c;展…...

深入理解封装与接口:Java程序设计的核心思想与最佳实践

目录 一、封装的优点 二、接口与默认方法 三、总结 在面向对象编程&#xff08;OOP&#xff09;中&#xff0c;封装&#xff08;Encapsulation&#xff09;是一个核心概念&#xff0c;Java对其进行了良好的支持。封装不仅有助于提高代码的安全性&#xff0c;还能够增强代码的…...

linux 下调试 mpu6050 三轴加速度

供自己备忘&#xff1b; 1. 参考资料&#xff1a; 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语言心型代码解析

方法一 心型极坐标方程 爱心代码你真的理解吗 笛卡尔的心型公式&#xff1a; for (y 1.5; y > -1.5; y - 0.1) for (x -1.5; x < 1.5; x 0.05) 代码里面用了二个for循环&#xff0c;第一个代表y轴&#xff0c;第二个代表x轴 二个增加的单位不同&#xff0c;能使得…...

【LeetCode】【算法】647. 回文子串

LeetCode 647.回文子串 题目描述 给你一个字符串s&#xff0c;请你统计并返回这个字符串中回文子串的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串是字符串中的由连续字符组成的一个序列。 思路 思路&#xff1a;中心拓展法 中心拓展法的意思是说&#xf…...

介绍6种常见的基于知识图谱推荐算法的类型和各自的优缺点

基于知识图谱的推荐算法有多种&#xff0c;每种算法各有其优点和缺点。下面是一些常见的基于知识图谱的推荐算法及其分析&#xff1a; 基于邻域的协同过滤&#xff08;Collaborative Filtering&#xff09; 描述&#xff1a;通过分析用户之间的相似性或项目之间的相似性来进行…...

使用python拟合二元曲线系数

python import numpy as np import pandas as pd注&#xff1a; xlsx 表格中 有 压力P&#xff0c;流量值Q&#xff0c;温度值 K&#xff1b; 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…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

大话软工笔记—需求分析概述

需求分析&#xff0c;就是要对需求调研收集到的资料信息逐个地进行拆分、研究&#xff0c;从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要&#xff0c;后续设计的依据主要来自于需求分析的成果&#xff0c;包括: 项目的目的…...

React Native 导航系统实战(React Navigation)

导航系统实战&#xff08;React Navigation&#xff09; React Navigation 是 React Native 应用中最常用的导航库之一&#xff0c;它提供了多种导航模式&#xff0c;如堆栈导航&#xff08;Stack Navigator&#xff09;、标签导航&#xff08;Tab Navigator&#xff09;和抽屉…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

LeetCode - 394. 字符串解码

题目 394. 字符串解码 - 力扣&#xff08;LeetCode&#xff09; 思路 使用两个栈&#xff1a;一个存储重复次数&#xff0c;一个存储字符串 遍历输入字符串&#xff1a; 数字处理&#xff1a;遇到数字时&#xff0c;累积计算重复次数左括号处理&#xff1a;保存当前状态&a…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中&#xff0c;将 long long 类型转换为 QString 可以通过以下两种常用方法实现&#xff1a; 方法 1&#xff1a;使用 QString::number() 直接调用 QString 的静态方法 number()&#xff0c;将数值转换为字符串&#xff1a; long long value 1234567890123456789LL; …...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...