問題
解答コード
main.rs
impl Solution {
pub fn running_sum(nums: Vec<i32>) -> Vec<i32> {
let mut vec: Vec<i32> = vec![nums[0]];
for i in 1..nums.len() {
vec.push(vec[i-1] + nums[i])
}
vec
}
}
解説
Rustでベクタを使用して、解答を導きました。
-
mut
演算子をつけて変数vet
可変にし、且つnums
の最初の要素で初期化しています - forループは
nums
の要素の1つ目からnums.len()
までのインデックスまでを繰り返し、現在のnums
の累積和を計算し、vec
に追加します
初めは初期化をした後、存在し得ないvec
の0個目の要素にアクセスしていたので怒られていましたね〜。
main.rs
// Bad! Because complipe Error!
// Line 4: Char 12: index out of bounds:
// the len is 0 but the index is 0
impl Solution {
pub fn running_sum(nums: Vec<i32>) -> Vec<i32> {
let mut vec: Vec<i32> = Vec::new();
vec[0] = nums[1];
for i in 1..nums.len() {
vec[i] = vec[i] + nums[i - 1];
}
vec
}
}