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

链表相交.

swap():用于交换同类型的变量

class Solution {
public:ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {ListNode*curA=headA;ListNode*curB=headB;int skipA=0,skipB=0;while(curA!=NULL){skipA++;curA=curA->next;}while(curB!=NULL){skipB++;curB=curB->next;}curA=headA;curB=headB;if(skipB>skipA){swap(skipA,skipB);swap(curA,curB);}int gap=skipA-skipB;while(gap--){curA=curA->next;}if(curA==curB){return curA;}  while(curA!=NULL){curA=curA->next;curB=curB->next;if(curA==curB){return curA;}  }return NULL;}
};

创建一个ListNode类型的指针curA,curA指向链表A的头节点headA。创建一个ListNode类型的指针curB,curB指向链表B的头节点headB。定义两个空间lenA,lenB用来记录链表A链表B的长度,并赋值为0。如果curA不为空NULL,则进入循环,A链表的长的lenA自加,curA后移,即curA=curA->next。跳出第一个循环。如果第二个链表B不为空NULL,则进入循环。B链表的长的lenB自加,curB后移,即curB=curB->next。跳出第二个循环。将curA指向第一个链表的头指针headA,将curB指向第二个链表的头指针headB,目的是重新定义头节点便于后续遍历。如果链表A的长度大于链表B的长度,则使用交换函数swap交换链表A的链表B长度以及链表。创建一个int类型的变量gap用于计算链表A和链表B的差。使用while循环让gap自减用实现让链表A和链表B的尾部对齐。如果头节点相同,则直接返回curA。如果链表A不为空。则进入循环。curA和curB后移,即curAt=curA->next,curB=curB->next。如果curA和curB相等,则返回curA。跳出第四个循环。这些条件都不满足的话就返回NULL。

主要思路:创建两个指针分别指向两个头结点,开辟两个空间用于记录两个链表的长度。遍历两个链表。用刚刚的指针分别指向两个链表的头结点。假设A链表是长链表,定义一个int类型的函数用于存储两个空链表的差。让长链表的头节点向后移是的两个链表的尾部对齐。如果两个链表的头结点相同则直接返回头节点。如果两个链表有相同值则返回长链表的头指针。都不满足的话返回空

http://www.xdnf.cn/news/2079.html

相关文章:

  • Java 日志:掌握本地与网络日志技术
  • 一文了解智慧教育顶刊TLT的研究热点
  • Linux进程地址空间
  • py语法基础理解
  • femap许可常见问题及解决方案
  • Vue 3 父子组件通信案例详解:Props 与 Emits 实战
  • 一洽 全力辅助商户平台在线咨询解决方案
  • 自定义异常处理(全局异常处理)
  • Vue多地址代理端口调用
  • Promethues 普罗米修斯
  • 小刚说C语言刷题——1565成绩(score)
  • 某地农产品交易中心钢网架自动化监测项目
  • 筛法求莫比乌斯函数
  • 4月25日星期五今日早报简报微语报早读
  • ZYNQ-GPIO之MIO中断
  • 【计算机视觉】CV实战项目 - 深入解析基于HOG+SVM的行人检测系统:Pedestrian Detection
  • 管家婆财贸ERP BB103.收款单按明细核算部门项目
  • Java真的不难(五十五)Stream流的进阶用法
  • 题解:CF2106G2 Baudelaire (hard version)
  • html+servlet项目中的echart图表
  • 期刊论文发表,对重复率和AI率要求多少才合格?
  • 【MySQL数据库入门到精通-07 函数-字符串函数、数值函数、日期函数和流程函数】
  • 微差压传感器、呼吸传感器
  • C++开发未来发展与就业前景:从底层基石到未来引擎
  • 无限debugger实现原理
  • 皖维 大病救助办理手续说明
  • 分层设计数据仓库的架构和设计高效数据库系统的方法
  • 大模型应用开发之LLM入门
  • AI大模型学习十二:‌尝鲜ubuntu 25.04 桌面版私有化sealos cloud + devbox+minio对象存储测试和漫长修改之路
  • apt 源切到国内时出现证书验证不过问题