二つのリストの第1の共通ノード、逆配列の数を決定します。

番号は図面の前後よりも大きい場合には、アレイ内の二つの数字は、2つの数字は逆対を形成します。配列を入力し、この配列P.逆ペアの総数を見出します P結果モジュロ十億七を出力します。すなわち、出力P%十億七

ここに画像を挿入説明
ここに画像を挿入説明
ここに画像を挿入説明

二つの入力リスト、その第1の共通のノードを見つけます。

最初のリストと交差すると、2つの後ろにリストノードが等しい、二つのリストの交差点の後、確かにX字状ではありません

最初の2を取得し、その後、長いリストを手放すために、リストの長さ、ノードの数が2つのリストの間の差の長さを行くことである、2つのリストそれぞれの人が同じノードであるかどうかを各ステップ、裁判官、 。

/*
struct ListNode {
	int val;
	struct ListNode *next;
	ListNode(int x) :
			val(x), next(NULL) {
	}
};*/
class Solution {
public:
    int func1(ListNode* Head)   //求两个链表的长度
    {
        int count = 0;
        while(Head)
        {
            ++count;
            Head = Head->next;
        }
        return count;
    }
    ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) {
        int length1 = func1(pHead1);
        int length2 = func1(pHead2);
        int s;
        ListNode* p1 = pHead1;
        ListNode* p2 = pHead2;
        if(length1 > length2)
        {
            s = length1 - length2;
            while(s--)
            {
                p1 = p1->next;
            }
        }
        else
        {
            s = length2 - length1;
            while(s--)
            {
                p2 = p2->next;
            }
        }
        while(p1)
        {
            if(p1 == p2)
                return p1;
            p1 = p1->next;
            p2 = p2->next;
        }
    }
};
公開された230元の記事 ウォン称賛28 ビュー9303

おすすめ

転載: blog.csdn.net/weixin_43767691/article/details/103807264