How to product of array except self (arr[i] is equal to the product of all the elements except arr[i]) in C++

1 Answer

0 votes
#include <iostream>
#include <vector>

std::vector<int> productExceptSelf(const std::vector<int>& nums) {
    int size = nums.size();
    std::vector<int> answer(size, 1);

    // Prefix products
    int prefix = 1;
    for (int i = 0; i < size; i++) {
        answer[i] = prefix;
        prefix *= nums[i];
        // 1 5 10 30
    }

    // Suffix products
    int suffix = 1;
    for (int i = size - 1; i >= 0; i--) {
        answer[i] *= suffix;
        suffix *= nums[i]; // 4 12 24 120
        // 24 (24*1) 60 (12*5) 40 (10*4) 30 (30*1)
    }

    return answer;
}

int main() {
    std::vector<int> arr = {5, 2, 3, 4};

    std::vector<int> result = productExceptSelf(arr);

    std::cout << "Result: ";
    for (int x : result) {
        std::cout << x << " ";
    }
}



/*
run:

Result: 24 60 40 30 

*/

 



answered Jan 2 by avibootz
edited Jan 2 by avibootz

Related questions

...