問題: 与えられた整数の配列において、連続した要素が欠けている場合、それらの欠けている要素を埋める必要があります。例えば、配列 [1, 3, 5, 7, 9] が与えられた場合、2と4が欠けているので、配列を [1, 2, 3, 4, 5, 6, 7, 8, 9] とする必要があります。
解決策: 以下にいくつかの方法を紹介します。
-
ループを使用する方法:
- 配列の最小値と最大値を取得します。
- 最小値から最大値までの範囲でループを実行します。
- ループ内で、現在の要素が配列に存在しない場合、それを追加します。
- 最終的な配列を返します。
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
-
リスト内包表記を使用する方法:
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]