首页 > 其他分享 >链表(2)

链表(2)

时间:2024-01-18 09:44:35浏览次数:20  
标签:ListNode dummyB next 链表 traversalA traversalB

目录

链表相交

具体思路:

  1. 如果链表相交,那么后续的长度肯定是一样的,所以直接从后续长度一样的地方开始判断两个链表是否相等
class Solution {
public:
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        ListNode* dummyA=new ListNode(-1);
        ListNode* dummyB=new ListNode(-1);
        dummyA->next=headA;
        ListNode* traversalA=dummyA;
        dummyB->next=headB;
        ListNode* traversalB=dummyB;
        int lenA=0;
        int lenB=0;
        while(traversalA->next!=nullptr)
        {
            lenA++;
            traversalA=traversalA->next;
        }
        while(traversalB->next!=nullptr)
        {
            lenB++;
            traversalB=traversalB->next;
        }
        if(lenA>lenB)
        {
            
        }
        else
        {
            swap(dummyA,dummyB);
            swap(lenA,lenB);
        }
        traversalA=dummyA;
        traversalB=dummyB;
        for(int i=0;i<lenA-lenB;i++)
        {
            traversalA=traversalA->next;
        }
        while(traversalA!=nullptr)
        {
            if(traversalA==traversalB)
            {
                return traversalA;
            }
            traversalB=traversalB->next;
            traversalA=traversalA->next;
        }
        return nullptr;
    }
};

标签:ListNode,dummyB,next,链表,traversalA,traversalB
From: https://www.cnblogs.com/liviayu/p/17971807

相关文章

  • 旋转链表
      /**@lcapp=leetcode.cnid=61lang=cpp**[61]旋转链表*///@lccode=start/***Definitionforsingly-linkedlist.*structListNode{*intval;*ListNode*next;*ListNode():val(0),next(nullptr){}*ListNode(intx......
  • 删除链表的倒数第 N 个结点
      /**@lcapp=leetcode.cnid=19lang=c**[19]删除链表的倒数第N个结点*///@lccode=start/***Definitionforsingly-linkedlist.*structListNode{*intval;*structListNode*next;*};*/structListNode*removeNthFromEnd(......
  • leetcode 21.合并两个有序链表
    leetcode21.合并两个有序链表第二十一题:合并两个有序链表1.迭代:当l1和l2都不是空链表时,判断l1和l2哪一个链表的头节点的值更小,将较小值的节点添加到结果里,当一个节点被添加到结果里之后,将对应链表中的节点向后移一位。publicListNodemergeTwoLists(ListNodelist1,......
  • 遍历链表,将节点接到末端 【1月16日学习笔记】
    点击查看代码//遍历链表,将节点接到末端#include<iostream>usingnamespacestd;structnode{ intdata;//数据 node*next;//尾巴};//定义节点结构体node*A;//头指针固定,globalvariabl......
  • 双向链表C语言实现
    双向链表实现(带头结点版)双向链表的实现与单链表类似,在这里使用C语言实现,主要包括头插法插入节点,删除节点以及创建空链表抽象数据结构ADT定义双向链表与单链表的区别在于多了一个指向上一个节点的指针prevtypedefstruct_Node{intdata;struct_Node*next;......
  • 【算法】【线性表】【链表】随机链表的复制
    1 题目给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random......
  • 【算法】【线性表】【链表】环形链表
    1 题目给你一个链表的头节点 head ,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从0开始)。注意:pos 不作为参数进行传递 。仅......
  • leetcode 19.删除链表的倒数第N个节点
    leetcode19.删除链表的倒数第N个节点第十九题:删除链表的倒数第N个节点在对链表进行操作时,一种常用的技巧是添加一个哑节点(dummynode),它的next指针指向链表的头节点。这样一来,我们就不需要对头节点进行特殊的判断了。例如,在本题中,如果我们要删除节点y,我们需要知道节点y的前......
  • 每日一题 2024-1-15 删除排序链表中的重复元素Ⅱ
    1.题目(中等)原题链接给定一个已排序的链表的头\(head\),删除原始链表中所有重复数字的节点,只留下不同的数字。返回已排序的链表。示例1:输入:head=[1,2,3,3,4,4,5]输出:[1,2,5]示例2:输入:head=[1,1,1,2,3]输出:[2,3]提示:链表中节点数目在范围\([0,300]\)......
  • 【算法】【线性表】【链表】K 个一组翻转链表
    1 题目给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。示例1:......