0238.除自身以外数组的乘积

方法一:左右乘积列表

时间复杂度 $O(n)$,空间复杂度 $O(n)$。

impl Solution {
    pub fn product_except_self(nums: Vec<i32>) -> Vec<i32> {
        let (mut ans, n) = (Vec::new(), nums.len());
        let (mut left, mut right) = (vec![1; n], vec![1; n]);
        for i in 1..n {
            left[i] = left[i - 1] * nums[i - 1];
        }
        for i in (0..n - 1).rev() {
            right[i] = right[i + 1] * nums[i + 1];
        }
        for i in 0..n {
            ans.push(left[i] * right[i]);
        }
        ans
    }
}