LeetCode ソリューションの概要 2605. 2 つの数値配列から最小の数値を生成する

ディレクトリリンク:

Likou プログラミングの質問 - 解決策の概要_共有 + 録音 - CSDN ブログ

GitHub 同期問題解決プロジェクト:

GitHub - September26/java-algorithms: アルゴリズムに関する質問の概要。Niuke、leetCode、lintCode、その他の Web サイトからの質問に対する解決策とコード、さらには完全なモード クラスやリンク リスト コード生成ツールも含まれます。

原題リンク:LeetCode 公式サイト - 世界中のオタクに愛されるテクノロジー成長プラットフォーム


説明する:

1 から 9 までの数値のみ nums1 を含む 2 つの配列の合計が与えられています。nums2 各配列の要素は 互いに異なります。最も小さい数値 を返してください  。両方の配列 には、少なくとも この数値の特定の桁が含まれています。

例 1:

入力: nums1 = [4,1,3]、nums2 = [5,7]
出力: 15
説明:数値 15 の桁 1 が nums1 に表示され、桁 5 が nums2 に表示されます。15 は取得できる最小の数です。

例 2:

入力: nums1 = [3,5,2,6]、nums2 = [3,1,7]
出力: 3
説明:数値 3 の桁 3 が両方の配列に表示されます。

ヒント:

  • 1 <= nums1.length, nums2.length <= 9
  • 1 <= nums1[i], nums2[i] <= 9
  • 各配列の要素は 互いに異なります 。

問題解決のアイデア:

* 問題解決のアイデア:

*以下の原則:

※1. 番号が重複している場合は、1つだけ選択すればよいため、重複している番号が先に選択されます。

※2. 重複がない場合は、2つの配列から最小の値を選択して組み立てます。

コード:

class Solution2605
{
public:
    int minNumber(vector<int> &nums1, vector<int> &nums2)
    {
        sort(nums1.begin(), nums1.end());
        sort(nums2.begin(), nums2.end());
        vector<int> nums3;
        for (int i1 : nums1)
        {
            if (find(nums2.begin(), nums2.end(), i1) != nums2.end())
            {
                nums3.push_back(i1);
            }
        }
        if (nums3.size() > 0)
        {
            return nums3[0];
        }
        int minValue = min(nums1[0], nums2[0]);
        int maxValue = max(nums1[0], nums2[0]);
        if (minValue == 0)
        {
            return maxValue * 10;
        }
        return minValue * 10 + maxValue;
    }
};

おすすめ

転載: blog.csdn.net/AA5279AA/article/details/132700713