算法6:相交链表

题目链接

解析:

完整代码:

cpp 复制代码
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
typedef struct ListNode ListNode;
class Solution {
public:
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        //1.两个链表的长度
       ListNode* pa = headA;
       ListNode* pb = headB;
       int sizeA = 0, sizeB =0;
       while(pa)
       {
        ++sizeA;
        pa = pa ->next;
       } 
        while(pb)
       {
        ++sizeB;
        pb = pb ->next;
       } 
       int gap = abs(sizeA - sizeB);
       ListNode* longlist = headA;
       ListNode* shortlist = headB;
       if(sizeA < sizeB)
       {
        longlist = headB;
        shortlist = headA;
       }
       while(gap--)
       {
        //让长链表先走
        longlist = longlist->next;
       }
       while(longlist)
       {
        if(longlist == shortlist)
            return longlist;   //shortlist
        longlist = longlist ->next;
        shortlist = shortlist ->next;
       }
       //跳出循环,两个链表不相等
       return NULL;
        
    }
};
相关推荐
nglff2 小时前
蓝桥杯抱佛脚第二天|简单枚举,前缀和
算法·职场和发展·蓝桥杯
每天回答3个问题2 小时前
LeetCodeHot100|链表总结
数据结构·c++·链表
2301_793804692 小时前
C++安全编程指南
开发语言·c++·算法
m0_518019482 小时前
分布式系统安全通信
开发语言·c++·算法
AC__dream2 小时前
2024秋招-字节跳动-算法岗笔试
数据结构·算法
一叶落4382 小时前
LeetCode 151. 反转字符串中的单词(C语言)【双指针 + 字符串处理】
c语言·数据结构·算法·leetcode
_olone2 小时前
牛客每日一题:刷题统计(Java)
java·算法·容斥原理·牛客
无敌憨憨大王2 小时前
DFS(深搜)
算法·深度优先·图论
junnhwan2 小时前
LeetCode Hot 100——栈
java·数据结构·算法·leetcode·hot 100