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

160. 相交链表

时间:2024-01-29 14:36:30浏览次数:28  
标签:count 相交 链表 headB headA count1 count2 160

目录

题目

题解:双指针

  • 思路:计算两条链表的长度,找到长度差,让长的链表多走差的值,返回第一个相等的元素
class Solution:
    def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> Optional[ListNode]:
        count1,count2=0,0
        pa=headA
        pb=headB
        while headA:# 计算链表 A 的长度
            headA=headA.next
            count1+=1
        while headB:# 计算链表 B 的长度
            headB=headB.next
            count2+=1
        if count1>count2:
            count=count1-count2# 计算长度差
            #让A链先走count步
            while count!=0:
                pa=pa.next
                count-=1
        elif count1<count2:
            count=count2-count1# 计算长度差
            #让B链先走count步
            while count!=0:
                pb=pb.next
                count-=1
        while pa and pb:# 同时遍历链表 A 和链表 B,找到第一个相等的节点
            if pa==pb:
                return pa
            pa=pa.next
            pb=pb.next
        return None# 如果没有交点,返回 None      

标签:count,相交,链表,headB,headA,count1,count2,160
From: https://www.cnblogs.com/lushuang55/p/17994436

相关文章

  • 148. 排序链表(中)
    目录题目法一、冒泡排序法二、归并排序题目给你链表的头结点head,请将其按升序排列并返回排序后的链表。法一、冒泡排序冒泡排序:两个for循环,i从头开始,j在i后一位开始,比较如果j小于i就交换,否则i往后移classSolution:defsortList(self,head:Optional[ListNo......
  • 【算法】004_链表
    哈希表哈希表增删改查是常数时间,但是这个常数时间比较大放入哈希表的东西,如果是基础类型,内部按值传递,内存占用就是这个东西的大小放入哈希表的东西,如果不是基础类型,内部按引用传递,内存占用就是这个东西的内存地址的大小有序表有序表的增删改查是O(logn)级别的放入有序表......
  • (4/60)两两交换链表结点、删除链表倒数第N个结点、链表相交、环形链表
    两两交换链表结点leetcode:24.两两交换链表中的节点迭代法思路第一步cur->next=cur->next->next第二步cur->next->next=原cur->next第三步cur->next->next->next=原cur->next->next->next注意用临时变量保存指针位置。复杂度分析时间复杂度:O(N)。空间复杂度:O(1)。......
  • 链表操作
    代码随想录移除元素。不设置虚拟头节点,分类讨论。structListNode*removeElements(structListNode*head,intval){structListNode*temp;//当头结点存在并且头结点的值等于val时while(head&&head->val==val){temp=head;//将新的头结点设置为head->next并删......
  • 143. 重排链表(中)
    目录题目题解:双指针+翻转链表题目给定一个单链表L的头节点head,单链表L表示为:L0→L1→…→Ln-1→Ln请将其重新排列后变为:L0→Ln→L1→Ln-1→L2→Ln-2→…不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。题解:双指针+翻转......
  • 142. 环形链表 II(中)
    目录题目题解:双指针题目给定一个链表的头节点head,返回链表开始入环的第一个节点。如果链表无环,则返回null。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数pos来表示链表尾连接到链表中的位置(索......
  • 代码随想录算法训练营第四天| 24. 两两交换链表中的节点 19.删除链表的倒数第N个节
    24.两两交换链表中的节点给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。题目链接:24.两两交换链表中的节点-力扣(LeetCode)建议画图,会更清晰一些。同时注意交换问题要用两个临时节点。class......
  • 82. 删除排序链表中的重复元素 II(中)
    目录题目题解:双指针题目给定一个已排序的链表的头head,删除原始链表中所有重复数字的节点,只留下不同的数字。返回已排序的链表。题解:双指针题目给的头节点是第一个元素,处理起来较麻烦(需单独处理头节点);加上习惯用一个空的头节点,所以本题新建了一个虚拟头节点,以便统一......
  • 链表算法
    目录链表算法初始化节点1.删除链表的第N个节点2.删除链表中倒数第N个节点3.分块反转链表(K个一组翻转链表)4.反转链表I5.反转链表II(给定区间反转)6.判断是否为环形链表7.两数相加(两个链表相同位置相加)8.合并两个有序链表9.删除排序链表中的重复元素II10.旋转链表(将链表每个节......
  • 代码随想录算法训练营第三天| 203.移除链表元素,707.设计链表 ,206.反转链表
    203.移除链表元素给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val==val 的节点,并返回 新的头节点 。题目链接:203.移除链表元素-力扣(LeetCode)注意c++中NULL和nullptr的区别。应该用nullptr来表示空指针。/***Definitionforsingly......