中国建设银行行号查询网站google下载官网
链表相交
力扣题目链接
题目描述
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。
解题思路
这道题我看全是用双指针和哈希方法完成的,所以发布一下我的栈方法。
先把链表存入两个栈中,依次拿出来进行比较,直到元素不相同或者栈为空,然后返回最后一个相同的结点,就是答案。
题解
#include <stack>
class Solution {
public:ListNode* getIntersectionNode(ListNode* headA, ListNode* headB) {if(headA == nullptr || headB == nullptr){return nullptr;}stack<ListNode*> sa;stack<ListNode*> sb;ListNode* pa = headA;ListNode* pb = headB;while (pa) {sa.push(pa);pa = pa->next;}while (pb) {sb.push(pb);pb = pb->next;}ListNode* ans = nullptr;while(!sa.empty() && !sb.empty() && sa.top() == sb.top()){ans = sa.top();sa.pop();sb.pop();}return ans;}
};
总结
这道题目的题干读完就感觉很像栈的特性,就直接用着写了,没想到力扣上还没有发现这种解法。