LeetCode热题100——链表

news2024/11/26 18:51:48

链表

  • 1. 相交链表
  • 2. 反转链表
  • 3. 回文链表
  • 4. 环形链表
  • 5. 合并两个有序链表

1. 相交链表

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。
在这里插入图片描述

// 题解:使用A/B循环遍历,路径之和a+(b-c)=b+(a-c)则存在交点
ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
	ListNode* A = headA;
	ListNode* B = headB;
	while (A != B) {
		A = A != nullptr ? A->next : headB;
		B = B != nullptr ? B->next : headA;
	}
	return A;
}

2. 反转链表

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
在这里插入图片描述

// 题解:保存上次的值并反转
ListNode* reverseList(ListNode* head) {
	ListNode* pre_node = nullptr;
	ListNode* cur_node = head;
	while (cur_node != nullptr) {
		ListNode* temp_node = cur_node->next;
		cur_node->next = pre_node;
		pre_node = cur_node;
		cur_node = temp_node;
	}
	return pre_node;
}

3. 回文链表

给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false;
在这里插入图片描述

// 题解:使用快慢指针对前半部分链表反转
bool isPalindrome(ListNode* head) {
	ListNode* slow_node = head;
	ListNode* fast_node = head;
	ListNode* pre_node = nullptr;
	LisetNode* rev_node = head;
	while (fast && fast_node->next) {
		rev_node = slow_node;
		slow_node = slow_node->next;
		fast_node = fast_node->next->next;  // 快慢指针找到中间值

		rev_node->next = pre_node;  // 链表反转
		pre_node = rev_node;
	}

	if (fast_node != nullptr) {
		slow_node = slow_node->next;  // 奇数节点跳过
	}

	while (rev_node) {
		if (rev_node->val != slow_node->val) {
			return false;
		}
		rev_node = rev_node->next;
		slow_node = slow_node->next;
	}
	return true;
}

4. 环形链表

给你一个链表的头节点 head ,判断链表中是否有环。

如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。

如果链表中存在环 ,则返回 true 。 否则,返回 false 。

// 题解:快慢指针可以循环查找
bool hasCycle(ListNode *head) {
	ListNode* slow_node = head;
	LiseNode* fast_node = head;
	while (fast_node && fast_node->next) {
		slow_node = slow_node->next;
		fast_node = fast_node->next->next;
		if (slow_node == fast_node) {
			return true;
		}
	}
	return false;
}

5. 合并两个有序链表

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

// 题解:由于有序,因此可新创建链表,按照升序连接即可
ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {
	ListNode* cur_node = new ListNode(-1);
	ListNode* result_node = cur_node; // 用于返回
	while (list1 != nullptr && list2 != nullptr) {
		if (list1->val < list2->val) {
			cur_node->next = list1;
			list1 = list1->next;
		} else {
			cur_node->next = list2;
			list2 = list2->next;
		}
		cur_node = cur_node->next;
	}
	cur_node->next = list1 != nullptr ? list1 : list2;
	return result_node;
}

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

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

相关文章

Windows Server 2019安装docker服务

离线状态下&#xff0c;使用脚本在Windows Server 2019环境中安装docker服务。 1.安装脚本 在微软官方网站中&#xff0c;找到脚本并下载&#xff1a; 准备 Windows 操作系统容器 | Microsoft Learn 脚本地址&#xff1a; https://raw.githubusercontent.com/microsoft/Win…

数字化饲料工厂中常见的系统及其介绍

数字化饲料工厂是基于先进技术和数字化平台构建的现代化饲料生产系统&#xff0c;它包含了多种软件、硬件和基础设施系统。以下是数字化饲料工厂中常见的系统及其介绍&#xff1a; 一、自动化控制系统&#xff1a;包括PLC&#xff08;可编程逻辑控制器&#xff09;系统、SCADA&…

R语言 PPT 预习+复习

什么狗吧发明的结业考&#xff0c;站出来和我对线 第一章 绪论 吊码没有&#xff0c;就算考R语言特点我也不背&#xff0c;问就是叫么这没用。 第二章 R语言入门 x<-1:20 赋值语句 x 1到20在x上添加均值为0、标准差为2的正态分布噪声 y <- x rnorm (20, 0, 2) 这…

SOEM源码解析——eeprom_read(读EEPROM)

0 工具准备 1.SOEM-master-1.4.0源码1 eeprom_read函数总览 eeprom_read函数在SOEM源码的路径如下&#xff1a;test->linux->eepromtool->eepromtool.c&#xff0c;功能是读取指定字地址和长度的EEPROM数据&#xff1a; /*** brief 读取EEPROM数据* * param slave …

Vue3:一页多题答案校正及radio和checkbox混合使用

一页多题&#xff0c;类型包括单选&#xff0c;判断多选&#xff0c;涉及radio和checkbox同时使用&#xff0c;答案校正数据匹配&#xff0c;正确答案格式化&#xff0c;答案提交数据格式化&#xff0c;数据提交。 效果&#xff1a; 数据获取&#xff1a; 数据提交&#xff1a…

k8s中实现mysql主备

文章目录 一、k8s中实现mysql主备1.1 环境信息1.2 部署nfs-provisioner1.2.1 安装nfs1.2.2 部署nfs-provisioner 1.3 安装mysql1.4 备库上查看是否同步 一、k8s中实现mysql主备 1.1 环境信息 机器操作系统ipmysql版本k8s版本storageClassmaster1CentOS7.8192.168.0.20mysql5.…

Xbox漫游指南

以Xbox series s为例 开机启动 用手柄连接&#xff0c;注意两颗电池要方向相反插入&#xff0c;虽然里面2个插槽长一样&#xff1b; Xbox APP极其难用&#xff0c;放弃&#xff0c;直接用手柄连接 转区 只需要一个空U盘&#xff0c;大小不限制&#xff0c;格式化为NTPS格式…

【51单片机】DS1302时钟(学习笔记)

一、DS1302时钟 1、DS1302介绍 DS1302是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片。它可以对年、月、日、周、时、分、秒进行计时&#xff0c;且具有闰年补偿等多种功能 RTC(Real Time Clock)&#xff1a;实时时钟&#xff0c;是一种集成电路&#xf…

基础课22——云服务(SaaS、Pass、laas、AIaas)

1.云服务概念和类型 云服务是一种基于互联网的计算模式&#xff0c;通过云计算技术将计算、存储、网络等资源以服务的形式提供给用户&#xff0c;用户可以通过网络按需使用这些资源&#xff0c;无需购买、安装和维护硬件设备。云服务具有灵活扩展、按需使用、随时随地访问等优…

Spring-IOC容器深度剖析详解

&#x1f388;个人公众号:&#x1f388; :✨✨✨ 可为编程✨ &#x1f35f;&#x1f35f; &#x1f511;个人信条:&#x1f511; 知足知不足 有为有不为 为与不为皆为可为&#x1f335; &#x1f349;本篇简介:&#x1f349; 本篇由表及里分析Spring-IOC容器始末&#xff0c;如…

LeetCode算法心得——找到冠军(反向推理)

大家好&#xff0c;我是晴天学长&#xff0c;今天的周赛第二题&#xff0c;需要的小伙伴可以关注支持一下哦&#xff01;后续会继续更新的。 1) .找到冠军 一场比赛中共有 n 支队伍&#xff0c;按从 0 到 n - 1 编号。每支队伍也是 有向无环图&#xff08;DAG&#xff09; 上的…

Technology Strategy Pattern 学习笔记2-Creating the Strategy-World Context

Creating the Strategy-World Context 1 PESTEL 1.1 从6个方案看外部 PoliticalEconomicSocialTechnologicalEnvironmentalLegal 1.2 参考URL https://zhuanlan.zhihu.com/p/192522082https://www.docin.com/p-449396129.htmlhttps://blog.csdn.net/xiaoyw71/article/deta…

发现一款PDF转换成翻页电子书的网站

​随着科技的发展&#xff0c;电子书越来越受到人们的喜爱。而PDF格式的文件也越来越多地被人们使用。那么&#xff0c;如何将PDF文件转换成翻页电子书呢&#xff1f;今天就为大家推荐一款好用的PDF转翻页电子书网站。 一、网站介绍 这款网站是一款非常实用的在线转换工具&…

7.spark sql编程

概述 spark 版本为 3.2.4&#xff0c;注意 RDD 转 DataFrame 的代码出现的问题及解决方案 本文目标如下&#xff1a; RDD ,Datasets,DataFrames 之间的区别入门 SparkSession创建 DataFramesDataFrame 操作编程方式运行 sql 查询创建 DatasetsDataFrames 与 RDDs 互相转换 使用…

Navicat连接mysql 8.0.35 2059错误解决办法

这2天在家重装电脑&#xff0c;顺便把mysql升级8.0&#xff0c;安装完成后&#xff0c;用Navicat连接&#xff0c;报错2059&#xff0c;如下 网上查了一下&#xff0c; 【报错原因】mysql8.0 之前的版本中加密规则是 mysql_native_password&#xff0c;而 mysql8.0 之后的版本…

超越 GLIP! | RegionSpot: 识别一切区域,多模态融合的开放世界物体识别新方法

本文的主题是多模态融合和图文理解&#xff0c;文中提出了一种名为RegionSpot的新颖区域识别架构&#xff0c;旨在解决计算机视觉中的一个关键问题&#xff1a;理解无约束图像中的各个区域或patch的语义。这在开放世界目标检测等领域是一个具有挑战性的任务。 关于这一块&…

Vim快速插入常用代码模板

1 修改home目录下.vimrc 家目录中ls -a找到隐藏文件.vimrc 2 编辑.vimrc 输入i编辑&#xff0c;在尾巴插入代码&#xff0c;按:wq保存并退出。 noremap io i#include <stdio.h><Esc>o<Esc> noremap im iint main(int argc, char *argv[])<Esc> map …

使用自定义函数拟合辨识HPPC工况下的电池数据(适用于一阶RC、二阶RC等电池模型)

该程序可以离线辨识HPPC工况下的电池数据&#xff0c;只需要批量导入不同SOC所对应的脉冲电流电压数据&#xff0c;就可以瞬间获得SOC为[100% 90% 80% 70% 60% 50% 40% 30% 20% 10% 0%]的所有电池参数,迅速得到参数辨识的结果并具有更高的精度&#xff0c;可以很大程度上降低参…

第7章-使用统计方法进行变量有效性测试-7.1-假设检验

目录 女士品茶 假设检验 样本与总体 原假设与备择假设 检验法、拒绝域与检验统计量 显著性水平 决策方法——临界值法和p值&#xff08;p-value&#xff09;法 假设检验步骤 参考文献 假设检验&#xff0c;我们从女士品茶这个故事开始说起。希望这篇文章能给您带来极大…

三、操作系统

&#xff08;一&#xff09;概述 操作系统是管理整个系统的软、硬件资源的系统&#xff0c;既是人和硬件之间的一种接口&#xff0c;也是应用软件与硬件之间的接口。 &#xff08;二&#xff09;进程管理 1.进程的状态 进程的状态是操作系统对进程进行管理的时候设置的几种状…