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

每日一题算法——链表相交

链表相交

力扣题目链接

暴力解法:飘过

class Solution {
public:ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {ListNode * cur = headA;while(cur != NULL){ListNode* curb = headB;while(curb != NULL){if(curb==cur){return cur;}curb = curb->next;}cur = cur->next;}return NULL;}
};

非暴力解法:

看如下两个链表,目前curA指向链表A的头结点,curB指向链表B的头结点:
在这里插入图片描述

我们求出两个链表的长度,并求出两个链表长度的差值,然后让curA移动到,和curB 末尾对齐的位置,如图:
在这里插入图片描述

此时我们就可以比较curA和curB是否相同,如果不相同,同时向后移动curA和curB,如果遇到curA == curB,则找到交点。

否则循环退出返回空指针。

class Solution {
public:ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {ListNode * cur = headA;ListNode* curb = headB;int counta=0;int countb=0;while(cur != NULL){counta++;cur = cur->next;}while(curb != NULL){countb++;curb = curb->next;}cur = headA;curb = headB;int n = 0;if(counta > countb){n = counta - countb;for(int i =0 ;i<n;i++){cur = cur->next;}}else{n = countb - counta;for(int i =0 ;i<n;i++){curb = curb->next;}}while(cur != NULL && curb !=NULL){if(cur == curb){return cur;}cur = cur->next;curb = curb->next;}return NULL;}
};

相关文章:

  • 21.Chromium指纹浏览器开发教程之触摸屏点指纹定制
  • Web前端:百度首页克隆 - 前端开发练习
  • 深入浅出 C++ 核心基础:从语法特性到入门体系构建
  • langchain-nextjs-template 模板安装与配置
  • 【深度学习—李宏毅教程笔记】各式各样的 Attention
  • jupyter切换存储路径
  • C++入门基础:引用,auto自动关键字,内联函数,范围for循环
  • 【C++】 —— 笔试刷题day_22
  • Postgresql几个常用的json操作
  • 安卓手机怎样配置数据加速
  • 10 C 语言常量详解:#define 与 const 定义常量及其区别与应用
  • JavaScript 版本号比较
  • 软件设计师/系统架构师---计算机网络
  • C++:在条件判断时何时为if,何时为else (易混淆※※※)
  • Leetcode 3524. Find X Value of Array I
  • NFS服务共享和安装命令的补充
  • 辅助函数构造题目(缓慢更新,遇到更道)
  • next.js 如何实现动态路由?
  • 云点数据读写
  • 【小沐杂货铺】基于Three.JS绘制卫星轨迹Satellite(GIS 、WebGL、vue、react,提供全部源代码)
  • 中纪报刊文:新时代反腐败斗争为党赢得历史主动
  • 聚焦“共赢蓝色未来” “海洋命运共同体”上海论坛举行
  • 视频丨习近平同阿塞拜疆总统会谈:两国建立全面战略伙伴关系
  • 威廉·透纳诞辰250周年|他是现代艺术之父
  • 牛市早报|外汇局:4月以来外汇市场交易保持平稳,跨境资金延续净流入
  • 受贿超8.22亿元,新疆维吾尔自治区党委原副书记李鹏新一审被判死缓