1. 程式人生 > >160 尋找連結串列交點

160 尋找連結串列交點

解法一(兩連結串列共同字尾長度相同)

    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        if (headA == nullptr || headB == nullptr)
            return nullptr;
        int len_a = 1, len_b = 1;
        ListNode *temp_a=headA,*temp_b=headB;
        while (temp_a->next != nullptr) {
            temp_a = temp_a->next;
            ++len_a;
        }
        while (temp_b->next != nullptr) {
            temp_b = temp_b->next;
            ++len_b;
        }
        int len = len_a - len_b;
        if (len > 0)
            while (len > 0) {
                headA = headA->next;
                --len;
            }
        else
            while (len < 0) {
                headB = headB->next;
                ++len;
            }
        while (headA != nullptr) {
            if (headA == headB)
                return headA;
            headA = headA->next;
            headB = headB->next;
        }
        return nullptr;
    }

解法二

set不能儲存重複元素