238. Product of Array Except Self

Given an array nums of n integers where n > 1,  return an array output such that output[i] is equal to the product of all the elements of nums except nums[i].


Input:  [1,2,3,4]
Output: [24,12,8,6]

Constraint: It's guaranteed that the product of the elements of any prefix or suffix of the array (including the whole array) fits in a 32 bit integer.

Note: Please solve it without division and in O(n).

Follow up:
Could you solve it with constant space complexity? (The output array does not count as extra space for the purpose of space complexity analysis.)

Rust Solution

struct Solution;

impl Solution {
    fn product_except_self(nums: Vec<i32>) -> Vec<i32> {
        let n = nums.len();
        let mut res: Vec<i32> = vec![1; n];
        let mut product = 1;
        for i in 0..n {
            res[i] *= product;
            product *= nums[i];
        product = 1;
        for i in (0..n).rev() {
            res[i] *= product;
            product *= nums[i];

fn test() {
    let nums = vec![1, 2, 3, 4];
    let res = vec![24, 12, 8, 6];
    assert_eq!(Solution::product_except_self(nums), res);

Having problems with this solution? Click here to submit an issue on github.