兩個鏈表的第一個公共結點(C++牛客網)

解題思路:

(1)笨辦法,利用stack的先進後出特點

(2)從末端開始比較

/*
struct ListNode {
	int val;
	struct ListNode *next;
	ListNode(int x) :
			val(x), next(NULL) {
	}
};*/
class Solution {
public:
    ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) {
        if(pHead1==NULL || pHead2==NULL) return NULL;
        stack<ListNode*> a,b;
        ListNode *pre = NULL;
        while(pHead1) a.push(pHead1),pHead1=pHead1->next;
        while(pHead2) b.push(pHead2),pHead2=pHead2->next;
        while(!a.empty() && !b.empty() && a.top()==b.top()) {
            pre = a.top();
            a.pop(),b.pop();
        }
        return pre;
    }
};

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章