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

LeetCode-相交链表(160)

题目描述:

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。
图示两个链表在节点 c1 开始相交:
在这里插入图片描述
题目数据保证整个链式结构中不存在环。
注意,函数返回结果后,链表必须保持其原始结构 。
思路: 首先使用两个循环求得两个链表的长度,然后相减得到差值,指向长的链表的指针移动差值步,然后和短链表指针同时移动,这里是使用循环实现,当长短指针相等时就到达了相交节点。当然实现代码时要注意长短链表指针是否为空的问题,长短链表指针同时移动的循环中要注意长短链表的指针都不可为空,如果为空则跳出并且经过判断,确定两个链表直到遍历完都没有相交的节点,返回null。如果是因为长短链表指针相等而跳出的就跳出相应的相交节点。
代码:

public class Solution {public ListNode getIntersectionNode(ListNode headA, ListNode headB) {int lenA = 0, lenB = 0;ListNode curA = headA;ListNode curB = headB;while (curA != null) {curA = curA.next;lenA++;}while (curB != null) {curB = curB.next;lenB++;}int len = lenA - lenB;ListNode listL = headA;ListNode listS = headB;if (len < 0) {len = lenB - lenA;listL = headB;listS = headA;}while (len != 0) {listL = listL.next;len--;}while (listS != null && listL != null && listL != listS) {listL = listL.next;listS = listS.next;}if (listL == listS && listL == null) {return null;}return listL;}
}

相关文章:

  • 如何在uni-app项目中使用路由
  • 一些简单OJ:进制转换,报数字,刷快手。
  • 微短剧,会成为长视频的“救命稻草”吗?
  • 如何通过内网穿透实现远程访问本地Linux SVN服务
  • 什么是公差分析软件?DTAS3D自主可控
  • vue2、vue3实现用aws s3协议操作minio进行文件存储和读取
  • 机器视觉系统选型-特征重复性
  • ubuntu22.04 下载路径
  • Upload-Labs-Linux
  • linux:下载、网络请求、端口
  • 查看docker映射数据卷
  • 3分钟了解安全数据交换系统有什么用!
  • 【效率工具】利用python进行本地知识库(PDF和WORK文件内容)的批量模糊搜索
  • 深入理解pytest.ini文件的配置与使用
  • Ref和类型断言
  • 《Java编程思想》读书笔记-对象导论
  • git 常用命令
  • GitUp, 你不可错过的秀外慧中的git工具
  • js写一个简单的选项卡
  • mysql 数据库四种事务隔离级别
  • PHP CLI应用的调试原理
  • Rancher如何对接Ceph-RBD块存储
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • 从PHP迁移至Golang - 基础篇
  • 简单基于spring的redis配置(单机和集群模式)
  • 前端设计模式
  • 小而合理的前端理论:rscss和rsjs
  • No resource identifier found for attribute,RxJava之zip操作符
  • python最赚钱的4个方向,你最心动的是哪个?
  • ​LeetCode解法汇总518. 零钱兑换 II
  • ​linux启动进程的方式
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (一一四)第九章编程练习
  • (转)程序员技术练级攻略
  • .net 使用ajax控件后如何调用前端脚本
  • .sh
  • @GetMapping和@RequestMapping的区别
  • [.NET 即时通信SignalR] 认识SignalR (一)
  • [1181]linux两台服务器之间传输文件和文件夹
  • [17]JAVAEE-HTTP协议
  • [acm算法学习] 后缀数组SA
  • [ai笔记3] ai春晚观后感-谈谈ai与艺术
  • [Enterprise Library]调用Enterprise Library时出现的错误事件之关闭办法
  • [GN] Vue3.2 快速上手 ---- 核心语法2
  • [IDF]聪明的小羊
  • [JavaScript]_[初级]_[不使用JQuery原生Ajax提交表单文件并监听进度]
  • [LeetCode]—Anagrams 回文构词法
  • [linux] C语言Linux系统编程进程基本概念
  • [Linux]history 显示命令的运行时间
  • [Unity3d for android]屏幕触摸事件
  • [Vue 配置] Vite + Vue3 项目配置 Tailwind CSS
  • [WebUI Forge]ForgeUI的安装与使用 | 相比较于Auto1111 webui 6G显存速度提升60-75%