首页 > 其他分享 >160. 相交链表

160. 相交链表

时间:2023-08-09 20:32:37浏览次数:36  
标签:ListNode 相交 链表 headB headA 160 节点

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。

图示两个链表在节点 c1 开始相交

160. 相交链表_数据

题目数据 保证 整个链式结构中不存在环。

示例 1:

160. 相交链表_链表_02

输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,6,1,8,4,5], skipA = 2, skipB = 3
输出:Intersected at '8'
解释:相交节点的值为 8 (注意,如果两个链表相交则不能为 0)。

示例 2:

160. 相交链表_双指针_03

输入:intersectVal = 2, listA = [1,9,1,2,4], listB = [3,2,4], skipA = 3, skipB = 1
输出:Intersected at '2'
解释:相交节点的值为 2 (注意,如果两个链表相交则不能为 0)。

不会啊不会啊,菜菜菜

绝了,想到了双指针,但没想到要这样用

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> Optional[ListNode]:
        if not headA and not headB:
            return None
        a = headA
        b = headB
        while a!=b:
            if a:
                a = a.next
            else:
                a = headB
            if b:
                b = b.next
            else:
                b = headA
        return a

以下官方题解思路:

160. 相交链表_双指针_04

就是相交的话走到相交的节点所走的距离是一样。

标签:ListNode,相交,链表,headB,headA,160,节点
From: https://blog.51cto.com/u_16123878/7024996

相关文章

  • LRU机制:哈希表+双向链表 [labuladong-刷题打卡 day9]
    今天的知识点LRU缓存机制的实现。学过计组都知道LRU算法(leastrecentlyused最近最少使用算法)是资源管理中的常用算法。那么他是如何实现的呢?LRU原理和Redis实现146.LRU缓存此题算是对LRU机制的一个简化。为了使查找删除在O(1)中实现,我们结合哈希表和双向链表各自在查找和......
  • 【代码设计】链表结构解决多流程校验
    目的 使用合理的代码设计,解决业务场景的中的实际问题。背景介绍 在实际的业务场景中,用户的一个操作行为,是否允许真正被执行,往往会涉及到多流程的校验,一旦有条件不满足将会被中止。以下面流程图为例:用户点击了打赏按钮,会进行是否有网络检查,没有网络,会有网络连接弹框,等待用户连接......
  • 递归反转链表局部[labuladong-刷题打卡 day8]
    写在前面前两天刷题打卡,感觉东哥的代码模板没有题解中的简洁,或者那些极限优化的代码中有很多优化技巧,但今天去感受递归的含义的时候,觉得毕竟我现在是在学习算法,理解算法含义才是学习的意义。至于优化,那是之后的事,所以刷题的时候不必过于追求简洁,就像追求简洁而降低可读性一样属......
  • 成功搞定H7-TOO的FreeRTOS Trace图形化链表方式展示任务管理
    之前推出了H7-TOOL的RTOSTrace功能,已经支持RTX5,ThreadX,uCOS-III,uCOS-II和FreeRTOS,特色是不需要目标板额外做任何代码,实时检测RTOS任务执行情况,支持在线和脱机玩法,效果是下面这样的:  这样的展示还不够直观,这几天开始研究图形化链表方式展示任务管理,从源码的角度来看,OS内核......
  • 反转单向链表
    反转单向链表时间复杂度:O(N)空间复杂度:O(1)voidreverse_list(node**head_ptr){ node*prev=NULL; node*curr=*head_ptr; node*next=NULL; while(curr!=NULL){ next=curr->next; curr->next=prev; prev=curr; curr=next; } *head_......
  • 02手写链表
    一、简介手写链表实现以下功能尾插获取指定下标的元素按照指定位置插入元素打印链表内容删除指定元素释放整个链表链表反转链表中相邻元素的和最大的两个元素的第一个节点,且返回和的最大值二、源代码LinkedList.h#ifndef_LINKEDLIST_H#define_LINKEDLIST_H#inc......
  • python对单双链表进行操作
    `classLinkNode:definit(self,val=0,next=None):#定义指针指向节点的数值self.val=val#定义指针self.next=NoneclassMyLinkedList:definit(self):self.head=LinkNode(0)self.size=0#获取链表中下标为index的值,如果下标无效,则返回-1defget(self,index:i......
  • 24. 两两交换链表中的节点 【递归】
    给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。输入:head=[1,2,3,4]输出:[2,1,4,3] 思路:递归fromtypingimportOptional#创建链表defcreate_linked_list(lst):ifnotlst:......
  • 数据结构与算法(四):双向链表
    基本概念双向链表概念和单向链表是一致的,区别在于双向链表在单向链表的基础上,指针区域多了一个指向上一个节点的指针。单向链表内容可以参考我的上一篇文章:http://t.csdn.cn/Iu56H。基本的数据结构如图所示:链表结构双向链表结构包含了节点的数据内容和两个指针:指向前一个节点......
  • 力扣-24. 两两交换链表中的节点
     题目:给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 =publicstaticListNodeswapPairs(ListNodehead){if(head==null||head.next==null)returnhead;......