• 10.两个链表的交叉


    题目:请写一个程序,找到两个单链表最开始的交叉节点。

     注意事项
    • 如果两个链表没有交叉,返回null
    • 在返回结果后,两个链表仍须保持原有的结构。
    • 可假定整个链表结构中没有循环。

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
        /**
         * @param headA: the first list
         * @param headB: the second list
         * @return: a ListNode
         */
        ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
            // write your code here
           stack<ListNode *> stackA, stackB;
            ListNode * result = NULL, *pA = headA, *pB = headB;
            if (headA == NULL || headB == NULL)
                return result;
            while (pA != NULL) {
                stackA.push(pA);
                pA = pA->next;
            }
            while (pB != NULL) {
                stackB.push(pB);
                pB = pB->next;
            }

            while (!stackA.empty() && !stackB.empty()) {
                if (stackA.top() == stackB.top()) {
                    result = stackA.top();
                    stackA.pop();
                    stackB.pop();
                } else {
                    break;
                }
            }
            return result;
        }
    };

  • 相关阅读:
    用户使用调查报告
    Beta总结
    Beta冲刺Day7
    Beta冲刺Day6
    Beta冲刺Day5
    Beta冲刺Day4
    Beta冲刺Day3
    Beta冲刺Day2
    Beta冲刺Day1
    Beta预备
  • 原文地址:https://www.cnblogs.com/ALIMAI2002/p/7211376.html
Copyright © 2020-2023  润新知