連続した配列を作成する方法


問題: 与えられた整数の配列において、連続した要素が欠けている場合、それらの欠けている要素を埋める必要があります。例えば、配列 [1, 3, 5, 7, 9] が与えられた場合、2と4が欠けているので、配列を [1, 2, 3, 4, 5, 6, 7, 8, 9] とする必要があります。

解決策: 以下にいくつかの方法を紹介します。

  1. ループを使用する方法:

    • 配列の最小値と最大値を取得します。
    • 最小値から最大値までの範囲でループを実行します。
    • ループ内で、現在の要素が配列に存在しない場合、それを追加します。
    • 最終的な配列を返します。
    def make_array_consecutive(nums):
       min_num = min(nums)
       max_num = max(nums)
       result = []
       for i in range(min_num, max_num + 1):
           if i not in nums:
               result.append(i)
       return result
  2. リスト内包表記を使用する方法:

    • range 関数と not in 演算子を使用して、欠けている要素をフィルタリングします。
    • 最終的な配列を返します。
    def make_array_consecutive(nums):
       min_num = min(nums)
       max_num = max(nums)
       return [i for i in range(min_num, max_num + 1) if i not in nums]