day4 找到两个链表的交点

ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {

ListNode* curA = headA;

ListNode* curB = headB;

int lenA = 0, lenB = 0;

while (curA != NULL) { // 求链表A的长度

lenA++;

curA = curA->next;

}

while (curB != NULL) { // 求链表B的长度

lenB++;

curB = curB->next;

}

curA = headA;

curB = headB;

// 让curA为最长链表的头,lenA为其长度

if (lenB > lenA) {

swap (lenA, lenB);

swap (curA, curB);

}

// 求长度差

int gap = lenA - lenB;

// 让curA和curB在同一起点上(末尾位置对齐)

while (gap--) {

curA = curA->next;

}

// 遍历curA 和 curB,遇到相同则直接返回

while (curA != NULL) {

if (curA == curB) {

return curA;

}

curA = curA->next;

curB = curB->next;

}

return NULL;

}

相关推荐
Kuo-Teng9 小时前
LeetCode 73: Set Matrix Zeroes
java·算法·leetcode·职场和发展
mit6.8249 小时前
[HDiffPatch] 补丁算法 | `patch_decompress_with_cache` | `getStreamClip` | RLE游程编码
c++·算法
程序猿20239 小时前
Python每日一练---第六天:罗马数字转整数
开发语言·python·算法
葵续浅笑10 小时前
LeetCode - 杨辉三角 / 二叉树的最大深度
java·数据结构·算法·leetcode
qq_4798754310 小时前
RVO和移动语义
前端·算法
菜小麒10 小时前
推荐算法的八股文
算法·机器学习·推荐算法
Miraitowa_cheems10 小时前
LeetCode算法日记 - Day 94: 最长的斐波那契子序列的长度
java·数据结构·算法·leetcode·深度优先·动态规划
L_090710 小时前
【Algorithm】Day-11
c++·算法·leetcode
薛慕昭11 小时前
C语言核心技术深度解析:从内存管理到算法实现
c语言·开发语言·算法
.ZGR.11 小时前
第十六届蓝桥杯省赛 C 组——Java题解1(链表知识点)
java·算法·链表·蓝桥杯