首页 > 其他分享 >LeetCode | 160 Intersection of two linkedlists

LeetCode | 160 Intersection of two linkedlists

时间:2024-08-03 20:28:37浏览次数:14  
标签:courseB courseA ListNode null linkedlists headA Intersection 160 headB

https://github.com/dolphinmind/datastructure/tree/datastructure-linkedlist

分析

判断两个链表是否相交,转换成了双指针相遇的问题。还是那句话,双指针的本质是遍历,走的路其实一样

            /**
             * 解决两个链接不相交而陷入无限循环的情况
             * 初始值:courseA = headA ,courseB = headB
             * 相交的情况:就是相遇问题
             * 不相交的情况:courseA和courseB会把双方所有结点遍历一遍
             * eg: headA = 1->2->3->4->5
             *     headB = 6->7->8
             *
             *     courseA = 1->2->3->4->5  ->6->7->8  ->6
             *     courseB = 6->7->8  ->1->2->3->4->5  ->1
             */

主类

package com.github.dolphinmind.linkedlist;

import com.github.dolphinmind.linkedlist.uitls.ListNode;

/**
 * @author dolphinmind
 * @ClassName IntersectionOfTwoLinkedListsIcci
 * @description
 * @date 2024/8/3
 */

public class IntersectionOfTwoLinkedListsIcci {
    private  ListNode intersectionNode;

    public ListNode<?> getIntersectionNode(ListNode<?> headA, ListNode<?> headB) {

        ListNode<?> courseA = headA;
        ListNode<?> courseB = headB;
        Boolean flag = false;

        if (headA == null || headB == null) {
            System.out.println("headA or headB is null");
            return null;
        }

        while (courseA != courseB) {
            courseA = courseA != null ? courseA.next : headB;
            courseB = courseB != null ? courseB.next : headA;

            /**
             * 解决两个链接不相交而陷入无限循环的情况
             * 初始值:courseA = headA ,courseB = headB
             * 相交的情况:就是相遇问题
             * 不相交的情况:courseA和courseB会把双方所有结点遍历一遍
             * eg: headA = 1->2->3->4->5
             *     headB = 6->7->8
             *
             *     courseA = 1->2->3->4->5  ->6->7->8  ->6
             *     courseB = 6->7->8  ->1->2->3->4->5  ->1
             */
            // 单个链表遍历结束
            if (!flag && (courseA == headB || courseB == headA)) {
                flag = true;
            }

            // 两个链表都遍历结束,course回到对方的头节点
            if (flag && (courseA == headB && courseB == headA)) {
                System.out.println("No intersection");
                return null;
            }
        }

        return courseA;
    }
}

标签:courseB,courseA,ListNode,null,linkedlists,headA,Intersection,160,headB
From: https://www.cnblogs.com/dolphinmind/p/18341009

相关文章

  • Laconic Private Set-Intersection From Pairings (2022)
    LaconicPrivateSet-IntersectionFromPairings(2022)论文地址:https://eprint.iacr.org/2022/529.pdf代码地址:https://github.com/relic-toolkit/relic/tree/main/demo/psi-client-server代码运行参考:RELIC库学习Laconic算法介绍Laconic适用于算力和存储受限的客户端......
  • 题解:CF1608F MEX counting
    题解:CF1608FMEXcounting与其他题解不同,本篇题解是运用辅助数组$g$来解决问题。虽然代码可能要繁琐一点,但是辅助数组的思路适用范围更广一点。首先还是转化为前$i$个数的$mex$在区间$[l_i,r_i]$内。我们用dp数组$f_{i,x,c}$表示处理到了第$i$个数,当前的mex为......
  • getBoundingClientRect 和 IntersectionObserver 的区别和用法
    目录getBoundingClientRectIntersectionObservergetBoundingClientRectgetBoundingClientRect是一个DOMAPI方法,用于获取指定元素相对于视口的位置和尺寸信息。它返回一个DOMRect对象,包含了元素的左上角和右下角相对于视口的坐标。“图片懒加载”,这个词语想必大家再熟悉不......
  • Vivotek CC8160 栈溢出漏洞复现
    漏洞文件https://github.com/Vu1nT0tal/IoT-vulhub/tree/master/VIVOTEK/remote_stack_overflow另需文件arml内核,文件系统,arm-gdbserver,initrd。https://people.debian.org/~aurel32/qemu/armel/启动qemu-systemqemu-system-arm-Mversatilepb-kernelvmlinuz-3.2.0-4-v......
  • 联想电脑收不到WiFi(Wireless-AC 3160 无法找到wifi6)
    可能出现该故障的设备:ThinkPadE450,E550,E450c,E550c ThinkPadE450,E550,E450c,E550c,在有的场景手机能收到的WiFi笔记本搜不到,这个收不到的WiFi他的版本是802.11ac/802.11axWiFi,如果路由器没有开启2.4G及向下兼容功能的话就会出现搜不到WiFi的故障现象。故障原因:......
  • SQL Prompt安装不上(报错:1603)
     一开始一直跟踪服务看到是RedGateClient运行不起来(报错信息代码是这个1603),后面查询到官网:https://productsupport.red-gate.com/hc/en-us/articles/360015772598-Redgate-Client-Service-fails-to-start使用管理员运行CMD执行:netshhttpaddiplisten127.0.0.1 之后再......
  • ubuntu 20.04 改变IPV4地址, 网卡名称 ens160
    1)查看网卡名称,使用:ifconfig或者iplink 2)进入netplan目录cat/etc/netplan3)编辑网络配置文件vim01-network-manager-all.yaml4)编辑内容如下 network:ethernets:ens160:dhcp4:noaddresses:-10.1.13.74/24gat......
  • 【嵌入式DIY实例-ESP8266篇】-LCD1602显示DS1621传感器数据
    LCD1602显示DS1621传感器数据文章目录LCD1602显示DS1621传感器数据1、DS1621介绍2、硬件准备与接线3、代码实现在本文中,介绍如何将ESP8266NodeMCU板(ESP-12E)与DS1621数字温度传感器连接,其中温度值(摄氏度和华氏度)打印在1602LCD屏幕上。本项目......
  • 593、基于51单片机的测量仪(电压,电平,频率,LCD1602)
    完整资料或定制滴滴我(有偿)见文末。目录一、设计功能二、Proteus仿真三、原理图四、程序源码五、资料包括一、设计功能1、单片机型号:STC89C52/51、AT89C52/51、AT89S52/51等等都可通用。2、测量直流信号的电压,电压范围0~5V;3、测量信号的TTL电平,给出高低电......
  • 917、基于51单片机的出租车计价器(昼夜,LCD1602,步进电机,里程,单价)(程序+Proteus仿真+原理
    毕设帮助、开题指导、技术解答(有偿)见文未目录方案选择单片机的选择显示器选择方案一、设计功能二、Proteus仿真图单片机模块设计三、原理图四、程序源码资料包括:需要完整的资料可以点击下面的名片加下我,找我要资源压缩包的百度网盘下载地址及提取码。方案选择......