算法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;
        
    }
};
相关推荐
wo_jack13 分钟前
C++ 入门笔记(十七):list 入门 —— 为什么 list 不能 sort?
数据结构·c++·面试·stl·list
Oneshot1 小时前
DLX(Dancing Links)算法详解:求解数独最快的算法
算法
青少儿编程课堂1 小时前
蓝桥杯青少组图形化 + 全国青少年信息素养大赛 + 电子学会Scratch考级:校园连连看解析
c++·python·算法·bfs·信息学竞赛
kongdong2 小时前
Hikyuu | RSI均值回归交易策略实现
算法·均值算法·回归·量化交易·交易策略·hikyuu
小王C语言2 小时前
优选算法:分治-归并排序
算法
zaizai10073 小时前
算法(左程云)1
数据结构
charliejohn3 小时前
计算机考研 408 数据结构 图论-关键路径
数据结构·图论
非优秀程序员12 小时前
第05章 播放器大战,暴风、快播与那一夜|《互联网产品恩仇录》
算法