两个链表的交点set解决法

寻找两个链表的交点 一.题目描述 已知链表A的头节点指针headA, 链表B的头节点指针headB,两链表相交,求两链表交点对应的节点。 二.题目要求 1.如果两个链表没有交点,则返回NULL 2.在求交点的过程中,不可以破坏链表的结构或者修改链表的数据域 3.可以确保传入的链表A和链表B没有任何环 4.实现算法尽可能使时间复杂度为O(n), 空间复杂度为O(1) 三. 方案一:使用set求交集... 阅读详情

求两个链表的交点使用set集合来做

#include <iostream>
#include <set>
using namespace std;
struct ListNode{
    int val;
    ListNode *next;
};
ListNode* getIntersectionNode(ListNode *headA,ListNode *headB){
    set<ListNode*> node_set;
    while(headA){
        node_set.insert(headA);
        headA=headA->next;
    }
    while(headB){
        if(node_set.find(headB)!=node_set.end()){
            return headB;
        }
        headB=headB->next;
    }
    return NULL;
}

int main() {
    ListNode a;
    ListNode b;
    ListNode c;
    ListNode d;
    ListNode e;
    ListNode f;
    a.val=1;
    b.val=2;
    c.val=3;
    d.val=4;
    e.val=5;
    f.val=6;
    a.next=&b;
    b.next=&c;
    c.next=&d;
    d.next=&e;
    e.next=&f;
    f.next=NULL;
    
    ListNode a1;
    ListNode b1;
    ListNode c1;
    a1.val=3;
    b1.val=2;
    c1.val=1;
    a1.next=&b1;
    b1.next=&c1;
    c1.next=&d;
    ListNode* headA=&a;
    ListNode* headB=&a1;
    while(headA){
        cout<<"A:"<<headA->val<<endl;
        cout<<"B:"<<headB->val<<endl;
        headA=headA->next;
        headB=headB->next;
    }
    headA=&a;
    headB=&a1;
    ListNode* result;
    result=getIntersectionNode(headA,headB);
    cout<<result->val<<endl;
    cout<<result->next<<endl;
	return 0;
}
从0开始写Vue项目-环境和项目搭建 什么是VueVue.js - 渐进式 JavaScript 框架 | Vue.js (vuejs.org)2.介绍与描述动态构建用户界面的渐进式JavaScript框架作者:尤雨溪3.Vue的特点遵循MVVM模式编码简洁,体积小,运行效率高,适合移动/PC端开发它本身只关注UI,可以引入其它第三方库开发项目4.与其他JS框架的关联借鉴 Angular 的模板和数据绑定技术借鉴 React 的组件化和虚拟DOM技术5.Vue周边库vue-cli:vue脚手架axios。 阅读详情

相关推荐

灵魂三问:因果推断

什么是因果推断?为什么研究因果推断?怎么进行因果推断研究?

ML OR 智能决策的博客 2902

链表交点(用set)

weixin_39916039的博客 207

S32K344 Flash Driver实战:手把手教你实现任意字节写入与扇区解锁(含C40_Ip避坑指南)

本文深入解析S32K344微控制器的Flash驱动开发,重点解决C40_Ip驱动库的8字节对齐限制和扇区保护锁问题。通过实战案例和代码示例,详细介绍了如何实现任意字节写入、扇区解锁及性能优化策略,为Bootloader和OTA升级等应用提供可靠解决方案。

weixin_33713707的博客 432

利用set判断两个链表是否相交

#include&lt;iostream&gt; #include&lt;set&gt; struct ListNode { int val; ListNode* next; ListNode(int x):val(x),next(NULL){} }; int main() { //定义一个集合 //集合主要有去重的功能,集合中的元...

LIU_fei_er的博客 286

立创开源4G+GPS定位系统:基于微信小程序的低成本低功耗追踪方案

本文介绍了一个基于立创开源平台的超小型4G+GPS定位系统方案。该方案采用28mm*28mm主板,集成4G Cat.1通信与GPS定位,通过微信小程序“点灯专家”实现远程追踪管理,具备低成本、低功耗、易于部署的特点,适用于电动车、宠物、资产追踪等多种场景。

weixin_28895791的博客 394

Python爬虫实战:抓取天气数据并生成可视化图表(完整可复制代码)

工具/库核心作用选型理由requests发送HTTP请求,获取天气网页内容语法简单,上手快,支持Headers配置(反爬)解析HTML页面,提取目标天气数据无需懂复杂XPath,API直观,快速定位标签pandas数据清洗、整理(如日期/温度格式化)一键处理数据格式,与matplotlib无缝适配matplotlib生成可视化图表(折线图/饼图/柱状图)Python主流可视化库,定制性强,支持保存高清图生成随机User-Agent,应对反爬自动更新UA池,避免手动维护。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 909

找出两个链表的交点

常规方法 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */...

代码学习之路的博客 712

手把手教你学Simulink——机器人力控场景实例:基于Simulink的永磁同步电机重力补偿力矩控制仿真

本文介绍了基于Simulink的机器人重力补偿力矩控制仿真方法。针对机器人悬停时电机发热、抖动等问题,提出通过前馈补偿重力转矩的解决方案。文章详细阐述了从机器人动力学建模、重力补偿计算、PMSM转矩控制到系统集成的完整实现流程,并以2-DOF机械臂为例验证了补偿效果。结果表明,重力补偿能显著降低电机电流和拖拽力,提高系统柔顺性。文中还提供了高级功能扩展方向,如参数辨识、摩擦补偿等,为实际工程应用提供了参考框架。

MHD0815的博客 154

链表部分经典题目

不懂的话就给我留言吧,虽然我也菜 题目一: 如何判断一个单链表是否有环?有环的话返回进入环的第一个节点,无环的话返回空 要求: 如果链表长度为N,请做到时间复杂度为O(N),额外空间复杂度为O(1),注意这个题目的隐含条件是没有重复元素 思路1: 如果没有额外空间复杂度的限制的话,我们可以用哈希表或者hashset实现,即我们去遍历整个链表,将节点不断添加到哈希表/hashset中,当其...

fanfan999的博客 625

PyCharm配置SSH和SFTP远程连接服务器

关于这篇博文,主要因为公司企业都是通过本地测试,同步到服务器进行跑动,舍友看着同事丝滑的操作,让我做个教程。本着钻研的精神,写下了这篇博客记录 关于pycharm这个软件,只有专业版才有远程连接的这个配置,社区版没有(同事一再强调要专业版,学生认证还可申请免费) 关于SSH和SFTP都是一种协议 具体知识点补充可看我这篇文章: 【计算机网络】常见面试题集锦(全) SSH:提供安全通道进行远程登录 SFTP协议可以远程文件传输获取等,数据的安全传输主要由SSH连接提供

码农研究僧的博客 5533

YOLOv9实战:刀具磨损实时监控从摄像头到预测性维护(附车间落地代码)

摘要: 本文针对制造业刀具磨损监控痛点,提出基于YOLOv9的实时视觉检测方案。通过工业相机采集刀具图像,结合图像预处理(去油污、增强对比度)和深度学习模型,实现磨损等级分类与寿命预测。系统集成硬件选型(抗油污相机、红色环形光源)、数据增强(旋转、噪声模拟)及预测性维护(PLC联动),实测刀具利用率提升30%,工件报废率降至0.5%以下。详解车间部署、模型训练到系统落地的全流程,附代码与避坑指南,为工业视觉项目提供实战参考。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 541

[LeetCode] Intersection of Two Arrays 两个数组相交

Given two arrays, write a function to compute their intersection. Example: Givennums1=[1, 2, 2, 1],nums2=[2, 2], return[2]. Note: Each element in the result must be unique. The result can b...

田野中的锋芒 211

2026星宸科技数字IC设计笔试带答案

摘要:本文包含四个计算机科学领域的编程与逻辑设计题目解析。第一部分通过C语言程序补充水仙花数判断代码,考查循环结构和函数设计;第二部分分析Verilog代码的D触发器电路,讨论时序约束与时钟频率影响;第三部分详细讲解静态时序分析中的建立/保持时间计算与违例判断;第四部分计算机体系结构题目涉及CPI、MIPS计算和性能加速比分析。最后还包含一个逻辑代数化简的示例,展示基本的布尔代数简化技巧。这些题目全面覆盖了编程基础、数字电路设计、时序分析和计算机性能评估等核心知识点。(149字)

Open 120

求两个链表的交点(C++)

方法一:利用C++的set容器求交集 思路 将链表A的元素放入到set集合中 遍历链表B,如果链表B的某个结点在set集合中,返回该节点 代码实现 struct ListNode { int val; ListNode* next; ListNode(int x) :val(x), next(NULL) {} }; class Solution1//用set容器求解 { public...

weixin_45801057的博客 697

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

判断两个单链表是否有交点并且返回交点的值

一、解决这个问题之前我们需要了解下如何判断一个链表有环? 下面提供二种方法进行实现: 使用快慢指针,p1为快指针,p2为慢指针,让这两个指针指向链表的头部,让p1每次走一步,p2每次走两步,如果p1和p2相交,则说明这个链表上面有环;否则,p1和p2中任何一个为null,则说明没有环; 使用set集合,将节点往set集合中添加,如果出现不能往set中添加元素的时候,则说明链表是由环的; ...

研究生生活、学习记录 574

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

求两个链表的交点,若无交点返回null, 两种方法,时间复杂度为O(n)和O(n logn)

目录方法1使用set必备知识set的使用利用set求两个链表的交点方法2 分别求出链表长度做差后同时移动核心思想:1.分别求出两个链表长度2.用长的减去短的得到差值delta3.让长链表的头指针向前移动delta位,让两个链表此时指针和交点距离一样远4.同时移动两个链表的指针,直到有第一个交点为止. 方法1使用set 必备知识set的使用 利用set求两个数组的相同元素 #include<set> #include<stdio.h> int main(){ std::set&l

偶尔想看云飞的博客 638

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

C++求两个链表的交点

方法一,使用C++的set库 set的使用方法: int main() { set<int> setA; const int lenA = 7; const int lenB = 8; int a[lenA] = { 5,1,4,8,10,1,3 }; int b[lenB] = { 2,7,6,3,1,6,0,1 }; for (int i = 0; i < lenA; i++) { setA.insert(a

Jinondo's Blog 465

LeetCode 160.Intersection of Two Linked Lists.求两个链表的交点

题目: 已知链表A的头节点指针headA,链表B的头节点指针headB,连个链表相交,求两链表交点对应的节点。 要求: 1、如果两个链表没有交点,则返回NULL 2、在求交点的过程中,不可以破坏链表的结构或者修改链表的数据域。 3、可以确保传入的链表A与链表B没有任何环 4、*实现算法尽可能使用时间复杂度O(n),控件复杂度O(1) 思路一: 遍历链表A,将A中节点对应的指针(地址),插入set ...

MarkYangQ的博客 219

8道链表常考题-链表求交点

已知链表A的头节点指针headA,链表B的头节点指针headB,两个链表相交,求两链表交点对应的节点。 使用set求交集 1.遍历链表A,将A中节点对应的指针(地址),插入set 2.遍历链表B,将B中节点对应的指针(地址),在set中查找,发现在set中的第一个节点地址,即是两个链表的交点。 ...

肥叔菌的博客 9277

C++ 链表的交点

方法一:利用set容器 struct ListNode { int val; ListNode *next; ListNode(int x):val(x),next(NULL){} }; ListNode* getInstersectionNode(ListNode *headA, ListNode *headB) { std::set<ListNode*> node_set; while (headA) { node_set.insert(headA); head

酷小川的博客 442

算法基础~链表~求两个链表的交点(不考虑时间、空间复杂度)

ps:本题中的时间复杂度是O(nlogn),即set集合查找时复杂度是logn,而B链还需要遍历n个复杂度,所以最终复杂度 nlogn;思路:(1) 参考链表A“装”到set 集合中,然后B链表从头到尾依次去与“装”到 set 集合中的每个元素做地址的比较。例如图解A链表的长度明显就是长于B链表的,如果不以其中某一条链表为参照链,则A、B链表不可能相遇!(2)具体代码思路:①遍历A链表,将A中结点对应的指针(地址),插入set集合;② 遍历B链表,将B中结点对应的指针(地址),在set中查找,

m0_66468899的博客 273

链表求交点

问题来源:选自LeetCode 160. 相交链表 问题描述:  题目给定信息:题目中给出两个链表,这两个链表有一部分节点是相互重合的,我们的目的就是要找到两个链表重合的第一个节点,这里需要注意的是链表重合,而不是两个链表的元素相同。 问题分析: 这个问题的解决思路可以由两个:   第一个就是利用set集合中没有重复元素的特性,先把第一个链表中的全部元素的地址(这里必须是链表节点的地...

weixin_30917213的博客 214

剑指 Offer两个链表的第一个公共节点

题目描述 给定两个(单向)链表,判定它们是否相交并返回交点。请注意相交的定义基于节点的引用,而不是基于节点的值。换句话说,如果一个链表的第k个节点与另一个链表的第j个节点是同一节点(引用完全相同),则这两个链表相交。 题目分析 如果说引用相同,那么next值也相同,所以两个相交链表是这个样子的 最简单的方法,暴力o(n^2) public class Solution { public ListNode getIntersectionNode(ListNode headA, ListNode he

一个白馒头的博客 181

数据结构(链表合并、查找两个链表的交点、链表求环)

统一使用结构体 struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL){} }; 链表合并 假设 两个链表中数据都是有序链表,将两个链表按从小到大合并 // 链表1 ListNode a(10); ListNode b(20); ListNode c(30); ListNode d(40); ListNode e(50); a.ne

bloke_come的博客 890

leetcode刷题02--求链表交点--T160

题目: 思路一: 可以使用c++自带的stl库中的set集合来进行查找 知识补充: stl中set的使用: 其实set就是一个存放数据的集合,但是配备了一些很方便的操作 其中主要要用到的操作有三个: insert():插入元素 find():查找元素,返回给定值值得定位器,如果没找到则返回end()。 end():返回集合的尾迭代器,众所周知,STL 中区间都是左闭右开的,那么 end() ...

HCFYWW的博客 272

【8.7】链表-找出两个链表的第一个公共节点

第一种解法虽然直观且容易想到,但效率较低,因为它需要将第一个链表的所有节点逐一存储,然后再逐个判断第二个链表的节点是否存在于集合中。相比之下,最后一种解法则更为巧妙,它不需要统计链表的长度,而是当一个链表遍历结束后,立即切换到另一个链表继续遍历。这种方法虽然不太容易想到,但却是一种非常经典的解决方案,既高效又节省空间。

攻城狮7号的博客 1334
上一篇: 判断链表有环set解决法
下一篇: C++优先队列/priority_queue(最大堆、最小堆)
geter_CS
博客等级 码龄10年 7310粉丝 118原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值