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

22 相交链表

相交链表

    • 题解1 快慢双指针
    • 改进 (a+c+b = b+c+a)
    • 题解2 哈希表(偷懒)

给你两个单链表的头节点 headAheadB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null

在这里插入图片描述
题目数据 保证 整个链式结构中不存在环。

注意,函数返回结果后,链表必须 保持其原始结构
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
提示:

  • listA 中节点数目为 m
  • listB 中节点数目为 n
  • 1 <= m, n <= 3 ∗ 1 0 4 3 * 10^4 3104
  • 1 <= Node.val <= 1 0 5 10^5 105
  • 0 <= skipA <= m
  • 0 <= skipB <= n
  • 如果 listA 和 listB没有交点,intersectVal 为 0
  • 如果 listA 和 listB 有交点,intersectVal == listA[skipA] == listB[skipB]

进阶:你能否设计一个时间复杂度 O(m + n) 、仅用 O(1) 内存的解决方案?
(两个链表各遍历一次,空间不随元素个数变化)

题解1 快慢双指针

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {
public:ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {ListNode* tmpA = headA;ListNode* tmpB = headB;int Alen = 0;int Blen = 0;while(tmpA){Alen ++;tmpA = tmpA->next;}while(tmpB){Blen ++;tmpB = tmpB->next;}ListNode* fastNode = Alen >= Blen ? headA : headB;ListNode* slowNode = Alen < Blen ? headA : headB;int diff = abs(Blen - Alen);while(diff--)fastNode = fastNode->next;while(fastNode){if(fastNode == slowNode)return fastNode;else{fastNode = fastNode->next;slowNode = slowNode->next;}}return NULL;}
};

在这里插入图片描述

改进 (a+c+b = b+c+a)

class Solution {
public:ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {ListNode* tmpA = headA;ListNode* tmpB = headB;// 假设相交 设相交前A长a B长b// 设C点相交 设从C点到list尾结点长c// a+c+b = b+c+a 如果相交 则遍历这么多元素后 会回到C点// 操作上:tmpA指到尾 改指tmpBwhile(tmpA != tmpB){tmpA = tmpA == nullptr ? headB : tmpA -> next;tmpB = tmpB == nullptr ? headA : tmpB -> next;}return tmpA;}
};

题解2 哈希表(偷懒)

class Solution {
public:ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {unordered_set <ListNode*> kkmap;ListNode * tmp = headA;while(tmp){kkmap.insert(tmp);tmp = tmp->next;}tmp = headB;while(tmp){if(kkmap.count(tmp)) return tmp;tmp = tmp->next;}return nullptr;}
};

在这里插入图片描述

相关文章:

22 相交链表

相交链表 题解1 快慢双指针改进 (acb bca)题解2 哈希表(偷懒) 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 题目数据 保证 整个链式结构中不存在环。 注意&#xff…...

简历(快速上手)

简历 文章目录 简历简历模板:排版上:内容上:沟通上: 简历在面试中起到关键作用 网申,HR只会花10秒多来看一下 内推,如果简历没优势就只能pass 简历模板: ⽊及简历&#xff08;推荐! &#xff09; &#xff1a; https://resume.mdedit.online 排版上: 尽量简洁&#xff0c;…...

wpf复制xaml及其cs窗体到其他项目 添加现有项,选 .xaml.cs,点添加即可。VS2022

添加现有项&#xff0c;选 LoadingWindow.xaml.cs&#xff0c;点添加即可。...

在线旅游平台步入新时代,携程如何走出自己的路?

今年旅游从线下到线上全方位火了。有统计数据&#xff0c;一季度&#xff0c;光是抖音&#xff0c;旅游达人发布视频数量就高达175万条&#xff0c;播放量1350亿次&#xff0c;收获27亿次点赞。在这一趋势下&#xff0c;许多“不出名”的景区和酒店借势抖音达人完成“出圈”。短…...

java中feign远程调用底层是用Hystrix作为熔断器吗?

在较新的版本中&#xff0c;Feign 默认使用 OpenFeign 作为远程调用的底层实现&#xff0c;并且集成了 Netflix Hystrix 作为熔断器。然而&#xff0c;需要注意的是&#xff0c;自 Feign 10.x 版本开始&#xff0c;默认已不再集成 Hystrix。 在 Feign 中&#xff0c;Hystrix 被…...

Web安全——穷举爆破下篇(仅供学习)

Web安全 一、常见的端口服务穷举1、hydra 密码穷举工具的使用2、使用 hydra 穷举 ssh 服务3、使用 hydra 穷举 ftp 服务4、使用 hydra 穷举 mysql 服务5、使用 hydra 穷举 smb 服务6、使用 hydra 穷举 http 服务7、使用 hydra 穷举 pop3 服务8、使用 hydra 穷举 rdp 服务9、使用…...

强大的JTAG边界扫描(5):FPGA边界扫描应用

文章目录 1. 获取芯片的BSDL文件2. 硬件连接3. 边界扫描测试4. 总结 上一篇文章&#xff0c;介绍了基于STM32F103的JTAG边界扫描应用&#xff0c;演示了TopJTAG Probe软件的应用&#xff0c;以及边界扫描的基本功能。本文介绍基于Xilinx FPGA的边界扫描应用&#xff0c;两者几乎…...

苍穹外卖集成 Apache POI Java实现Excel文件的读写下载

苍穹外卖 day12 Echats 营业台数据可视化整合_软工菜鸡的博客-CSDN博客 Apache POI - the Java API for Microsoft Documents Project News 16 September 2022 - POI 5.2.3 available The Apache POI team is pleased to announce the release of 5.2.3. Several dependencies …...

iOS逆向:工具安装

二〇二三年〇八月二十三日&#xff08;2023版&#xff0c;iOS逆向笔记&#xff09; 对其他APP的实现感兴趣&#xff0c;对技术报以热枕&#xff0c;不去做违反职业道德和违法乱纪的事情&#xff0c;欢迎来到iOS逆向。 工欲善其事必先利其器 ------我说的。 网络不好可配置DNS 1…...

十种数据库缓存相关的技术和机制

数据库的缓存 -- 通过将数据库中的数据或结果集保存在内存或其他快速访问的介质中&#xff0c;能够加快查询响应&#xff0c;减少对磁盘或远程服务器的访问&#xff0c;降低资源消耗。 根据缓存的位置、内容、粒度、更新方式等不同&#xff0c;数据库缓存技术有多种类型和策略。…...

【C++】封装unordered_map和unordered_set(用哈希桶实现)

前言&#xff1a; 前面我们学习了unordered_map和unordered_set容器&#xff0c;比较了他们和map、set的查找效率&#xff0c;我们发现他们的效率比map、set高&#xff0c;进而我们研究他们的底层是由哈希实现。哈希是一种直接映射的方式&#xff0c;所以查找的效率很快…...

面试问题回忆

&#xff08;1&#xff09;查看端口 lsof -i:8080 / netstat lsof -i:8080&#xff1a;查看8080端口占用 lsof abc.txt&#xff1a;显示开启文件abc.txt的进程 lsof -c abc&#xff1a;显示abc进程现在打开的文件 lsof -c -p 1234&#xff1a;列出进程号为1234的进程所打开…...

更多场景、更多选择,Milvus 新消息队列 NATS 了解一下

在 Milvus 的云原生架构中&#xff0c;消息队列&#xff08;Log Broker&#xff09;可谓任重道远&#xff0c;它不仅要具备流式数据持久性、支持 TT 同步、事件通知等能力&#xff0c;还要确保工作节点从系统崩溃中恢复时增量数据的完整性。 在 Milvus 的架构中&#xff0c;一切…...

如何通过python实现一个web自动化测试框架?

要实现一个web自动化测试框架&#xff0c;可以使用Python中的Selenium库&#xff0c;它是最流行的Web应用程序测试框架之一。以下是一个基本的PythonSelenium测试框架的示例&#xff1a; 1、安装Selenium 在终端中输入以下命令&#xff0c;使用 pip 安装 Selenium&#xff1a…...

Linux —— 信号阻塞

目录 一&#xff0c;信号内核表示 sigset_t sigprocmask sigpending 二&#xff0c;捕捉信号 sigaction 三&#xff0c;可重入函数 四&#xff0c;volatile 五&#xff0c;SIGCHLD 信号常见概念 实际执行信号的处理动作&#xff0c;称为信号递达Delivery&#xff1b;信…...

【【萌新编写riscV之计算机体系结构之CPU 总二】】

萌新编写riscV之计算机体系结构之CPU 总二&#xff08;我水平太差总结不到位&#xff09; 在学习完软件是如何使用之后 我们接下来要面对的问题是 整个程序是如何运转的这一基本逻辑 中央处理器(central processing unit&#xff0c;CPU)的任务就是负责提取程序指令&#xff0…...

error:03000086:digital envelope routines::initialization error

项目背景 前端vue项目启动突然报错error:03000086:digital envelope routines::initialization error 我用的开发工具是vscode&#xff0c;node版本是v18.17.0 前端项目版本如下↓ 具体报错如下↓ 报错原因 node版本过高 解决方法 1输入命令 $env:NODE_OPTIONS"--op…...

暴涨130万粉仅用3个月,一招转型成B站热门UP主

- 导语 起号难、找不到内容方向、没流量、没粉丝等等运营困境环绕在创作者之间&#xff0c;近期&#xff0c;有黑马UP主短时间内就在B站涨粉百万&#xff0c;飞升成为热门UP主&#xff0c;以下&#xff0c;飞瓜数据&#xff08;B站版&#xff09;剖析黑马UP主运营技巧&#xf…...

【Linus】vim的使用:命令模式、底行模式、插入模式、视图模式、替换模式的常用操作介绍

目录 注意&#xff1a;以下操作前提是要确保你输入法是英文模式 一、进入和退出各个模式的方法 1.命令模式 2.底行模式 3.插入模式 4.视图模式 5.替换模式 二、在命令模式中一些常用的操作 1.移动光标 2.删除文字 3.复制 4.替换 5.撤销上一次操作 6.更改 7.跳至指…...

leetcode第362场周赛补题

8029. 与车相交的点 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a;差分数组 class Solution { public:int numberOfPoints(vector<vector<int>>& nums) {int diff[102] {}; for(auto p : nums)//差分{diff[p[0]] ;diff[p[1] 1] -- ;}int res …...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容&#xff0c;我认为是AI开发里面非常重要的内容。它在AI开发里无处不在&#xff0c;当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗"&#xff0c;或者让翻译模型 "将这段合同翻译成商务日语" 时&#xff0c;输入的这句话就是 Prompt。…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中&#xff0c;高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司&#xff0c;近期做出了一个重大技术决策&#xff1a;弃用长期使用的 Nginx&#xff0c;转而采用其内部开发…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

《C++ 模板》

目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板&#xff0c;就像一个模具&#xff0c;里面可以将不同类型的材料做成一个形状&#xff0c;其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式&#xff1a;templa…...