PTA: 7-3 2 つの増加するリンク リストの違い

^2 つの増加するリンク リストの差

トピック

ここに画像の説明を挿入します

入力サンプル

5
1 3 5 7 9
3
2 3 5

出力サンプル

3
1 7 9

コード

#include <iostream>
#include <list>
#include <unordered_set>
using namespace std;
int main() 
{
    
    
    int n1, n2;
    cin >> n1;

    list<int> a;//①
    for (int i = 0; i < n1; i++) 
    {
    
    
        int value;
        cin >> value;
        a.push_back(value);
    }

    cin >> n2;//②
    list<int> b;
    for (int i = 0; i < n2; i++) 
    {
    
    
        int value;
       cin >> value;
        b.push_back(value);
    }

    unordered_set<int> b_set(b.begin(), b.end());//③
    list<int> result;

    for (const int& val : a) //④
    {
    
    
        if (b_set.find(val) == b_set.end()) 
        {
    
    
            result.push_back(val);
        }
    }

    cout << result.size() <<endl;//⑤

    for (auto it = result.begin(); it != result.end(); ++it) 
    {
    
    
        cout << *it;
        if (next(it) != result.end()) 
        {
    
    //⑦
            cout << " ";
        }
    }
    return 0;
}

① 最初のリンク リストの番号と要素を入力します。
ここに画像の説明を挿入します
② 2 番目のリンク リストの番号と要素を入力します。 ③ ここに画像の説明を挿入します
unowned_set を使用して、クイック検索のために 2 番目のリストの要素を保存します。

④最初のリストを走査し、2番目のリストに要素が見つからない場合は結果リストに追加します。
ここに画像の説明を挿入します
⑤結果リストのサイズを出力します。

⑥最後に結果リストの要素をスペースで区切って出力します(
ここに画像の説明を挿入します
最後にスペースはありませんので注意)この判定を追加する必要があります。ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/m0_74195626/article/details/132943713