以下にいくつかのコーディング例を示します。
- ブルートフォース法: この方法では、与えられた配列の要素を1つずつ取り除き、残りの要素の積を計算します。これを各要素に対して繰り返し行い、新しい配列に結果を格納します。
def construct_product_array(arr):
n = len(arr)
product_arr = [1] * n
for i in range(n):
product = 1
for j in range(n):
if i != j:
product *= arr[j]
product_arr[i] = product
return product_arr
- 前方および後方の積の配列: この方法では、前方および後方の積の配列を事前に計算しておき、それらを使用して新しい配列を構築します。
def construct_product_array(arr):
n = len(arr)
product_arr = [1] * n
forward_product = [1] * n
backward_product = [1] * n
# 前方の積を計算
for i in range(1, n):
forward_product[i] = forward_product[i-1] * arr[i-1]
# 後方の積を計算
for i in range(n-2, -1, -1):
backward_product[i] = backward_product[i+1] * arr[i+1]
# 新しい配列を構築
for i in range(n):
product_arr[i] = forward_product[i] * backward_product[i]
return product_arr
また、解析の一環として、これらのアルゴリズムのパフォーマンスやメモリ使用量を比較し、入力サイズの増加に対するスケーラビリティを評価することも重要です。
以上が、与えられた配列から新しい配列を構築する方法とその解析についてのブログ投稿の内容です。