問題
累積和を作成してください。位置 i の値は、位置 0 から i までのすべての数値の合計です。
running_sum(numbers) を実装してください。
入力
numbers: 整数のリスト。
出力
累積合計のリストを返してください。
制約
0 ≤ 長さ ≤ 100,000; 合計値は64ビット整数に収まる
例
例 1
入力:
numbers = [1, 2, 3, 4]
期待される出力:
expected = [1, 3, 6, 10]
入力:
std::vector<long long> numbers = {1, 2, 3, 4};
期待される出力:
std::vector<long long> expected = {1, 3, 6, 10};
入力:
long[] numbers = new long[] {1, 2, 3, 4};
期待される出力:
long[] expected = new long[] {1, 3, 6, 10};
解説
これまでの合計: 1, 1+2=3, 3+3=6, 6+4=10。
例 2
入力:
numbers = [5, -5, 5]
期待される出力:
expected = [5, 0, 5]
入力:
std::vector<long long> numbers = {5, -5, 5};
期待される出力:
std::vector<long long> expected = {5, 0, 5};
入力:
long[] numbers = new long[] {5, -5, 5};
期待される出力:
long[] expected = new long[] {5, 0, 5};
解説
合計: 5, 0, 5。
解き方のヒント
まずは自分で考えてから、ヒントを 1 つずつ開いてみましょう。
ヒント 1
各出力要素は、それ以前の要素すべてと自分自身の合計で決まる。
ヒント 2
リストをたどりながら累積合計を持ち続ける。
ヒント 3
最初の位置は、最初の入力値そのものにすればよい。
目安の計算量
時間 O(n)、追加メモリ O(n)
参考資料
この課題はCodeUtility用に調整されています。上記の説明と制約に従ってください。