LeetCode热题100——链表

链表

  • 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;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Windows桌面便签工具推荐使用哪一款?

电脑桌面上张贴便利贴可以将近期需要完成的工作计划逐一添加到便利贴中&#xff0c;电脑桌面悬挂便利贴工具可以督促日常各项事务的完成。当前可悬挂在电脑桌面上的便利贴工具是比较多的&#xff0c;其中桌面小工具便签软件敬业签可满足各行业的办公需求。 建议大家在Windows桌…

SHEIN要求卖家完成德国EPR合规,逾期将强制下架——站斧浏览器

EPR是卖家在欧盟自由销售的通行证之一&#xff0c;如果没有&#xff0c;是不允许在欧盟国家销售产品的。 近期根据SHEIN官方邮件通知&#xff0c;卖家需要在收到邮件后5天内完成申报&#xff0c;逾期申报产品将会在德国站点下架。 因此&#xff0c;建议卖家尽快通过合规的服务…

Spring Security OAuth 2.0 资源服务器— JWT

目录 一、JWT的最小依赖 二、JWT的最基本配置 1、指定授权服务器 2、初始预期&#xff08;Startup Expectations&#xff09; 3、运行时预期&#xff08;Runtime Expectations&#xff09; 三、JWT认证是如何工作的 四、直接指定授权服务器 JWK Set Uri 五、提供 audie…

MIPI-CSI-2 RAW10笔记

好文&#xff1a; 【精选】摄像头的MIPI接口、DVP接口和CSI接口-CSDN博客【精选】摄像头的MIPI接口、DVP接口和CSI接口-CSDN博客 (56 封私信 / 24 条消息) 显示器的 VGA、HDMI、DVI 和 DisplayPort 接口有什么区别&#xff1f; - 知乎 (zhihu.com) 嵌入式工程师必备&#x…

0基础2小时搭建自己的网站

​作者主页 &#x1f4da;lovewold少个r博客主页 ⚠️本文重点&#xff1a;0基础2小时搭建个人网站 &#x1f449;【C-C入门系列专栏】&#xff1a;博客文章专栏传送门 &#x1f604;每日一言&#xff1a;宁静是一片强大而治愈的神奇海洋&#xff01; 目录 前言 第一步 环境…

云尘靶场 Medium_Socnet 内网为docker 无站代理 不存在gcc的提权方式 解决ldd过高无法执行exp 指定so文件

首先我们可以通过 arp-scan 扫描当前内网中的存活 但是不知道为什么扫不出来 然后我们使用fscan可以获取存活 这里大致扫描只开了22端口 所以我们使用nmap进行信息收集扫描 nmap -sS -sV -A -p- 172.25.0.13通过tcp 进行 版本服务扫描 并且检测系统版本 全端口 这里我们可以…

技术分享 | 想做App测试就一定要了解的App结构

app 的结构包含了 APK 结构和 app 页面结构两个部分 APK结构 APK 是 Android Package 的缩写&#xff0c;其实就是 Android 的安装包。通过将 APK 文件直接传到 Android 模拟器或 Android 手机中执行即可安装。 APK 文件其实是 zip 格式&#xff0c;但后缀名被修改为 apk&am…

随身wifi编译Openwrt的ImmortalWrt分支

背景&#xff1a; 之前用酷安上下载的苏苏亮亮版友提供的Openwrt&#xff0c;在高通410棒子上刷机成功&#xff0c;但编译一直就没搞定。近期听说又出了个分支版本ImmortalWrt&#xff0c;刷了个版本&#xff0c;感觉界面清爽不少&#xff0c;内核也升级&#xff0c;遂打算搞定…

深度剖析.locked1勒索病毒的威胁:如何保护您的数据

导言&#xff1a; .locked1勒索病毒是当今数字时代中最神秘的网络威胁之一。这种恶意软件以其毫不留情的数据加密技术而著称&#xff0c;常通过欺诈邮件附件、恶意链接或漏洞利用等方式传播。本文91数据恢复将深入探讨.locked1勒索病毒的运作方式&#xff0c;提供数据恢复的方…

centos7安装nginx-阿里云服务器

1.背景 2.准备工作步骤 2.1.安装gcc 阿里云服务器一般默认是安装了的 检查是否已安装 gcc -v 出现如下信息表示已安装: 如果没有安装,执行 yum -y install gcc 2.2.安装pcre,pcre-devel yum install -y pcre pcre-devel 2.3.安装zlib yum install -y zlib zlib-devel…

【漏洞复现】Apache_HTTP_2.4.49_路径穿越漏洞(CVE-2021-41773)

感谢互联网提供分享知识与智慧&#xff0c;在法治的社会里&#xff0c;请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现1、基础环境2、漏洞验证方式一 curl方式二 bp抓包 说明内容漏洞编号CVE-2021-41773漏洞名称Apache HTTP 路径穿越漏洞漏…

【Unity细节】生命函数Start的逻辑比从外部调用方法比起来哪个快

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 秩沅 原创 &#x1f636;‍&#x1f32b;️收录于专栏&#xff1a;unity细节和bug &#x1f636;‍&#x1f32b;️优质专栏 ⭐【…

飞书开发学习笔记(二)-云文档简单开发练习

飞书开发学习笔记(二)-云文档简单开发练习 一.云文档飞书开发环境API 首先还是进入开放平台 飞书开放平台&#xff1a;https://open.feishu.cn/app?langzh-CN 云文档相关API都在“云文档”目录中&#xff0c;之下又有"云空间",“文档”&#xff0c;“电子表格”&a…

Antv/G2 自定义tooltip鼠标悬浮提示信息

Antv/G2 提示 - Tooltip 教程 Tooltip 提示信息文档 chart.line().position(label*value).color(type).tooltip(type*value, (type:string, value:number) > { return {name: type,value: value%}}) });demo&#xff1a; <!DOCTYPE html> <html lang&quo…

浅谈前端出现率高的设计模式

目录 六大原则&#xff1a; 23 种设计模式分为“创建型”、“行为型”和“结构型” 前端九种设计模式 一、创建型 1.构造器模式&#xff1a;抽象了对象实例的变与不变(变的是属性值&#xff0c;不变的是属性名) 2. 工厂模式&#xff1a;为创建一组相关或相互依赖的对象提…

MMdetection3.x个人笔记

1.在自定义数据集用训练出的权重进行可视化推理 input(jpg文件) model_config 这两个可以不用加前面的形参 然后用 \ 隔开 写上 --weight xx.pth python demo/image_demo.py data/coco_duck/train2017/10640.jpg work_dirs/solov2_r50_fpn_1x_coco/solov2_r50_fpn_1x_coco…

ChatGPT 实际上是如何工作的?

添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; ChatGPT 操作的两个主要阶段 我们再用谷歌来打个比方。当你要求谷歌查找某些内容时&#xff0c;你可能知道它不会——在你提出要求的那一刻——出去搜索整个网络来寻找答案。相反&#xff0c;谷歌会在其数…

Git extension 中合并工具kdiff3乱码问题

打开kdiff3合并工具&#xff0c;setting->region settings 设置下面的编码格式为utf-8就可以啦&#xff01; 注意&#xff1a;需要在合并工具中设置编码格式&#xff0c; 在git 中配置编码格式没有效果

LLM之Prompt(一):5个Prompt高效方法在文心一言3.5的测试对比

在Effective Prompt: 编写高质量Prompt的14个有效方法文中我们了解了14个编写Prompt的方法&#xff08;非常感谢原作者&#xff09;&#xff0c;那么这些Prompt在具体大模型中的效果如何呢&#xff1f;本文以百度文心一言3.5版本大模型在其中5个方法上做个测试对比。 第1条&am…

掌动智能:UI自动化测试工具的五大功能

在现代软件开发中&#xff0c;保证应用程序的质量和性能至关重要。UI自动化测试工具是一种关键的资源&#xff0c;它们能够有效地检查应用程序的用户界面&#xff0c;确保它们在各种情况下都能正常运行。本文将探讨UI自动化测试工具的功能有哪些! UI自动化测试工具的五大功能&a…