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 numsexcept nums[i].

    Example:

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

    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.)

    Runtime: 52 ms, faster than 31.30% of C++ online submissions for Product of Array Except Self.

    class Solution {
    public:
        vector<int> productExceptSelf(vector<int>& nums) {
            long long product = 1;
            int zeros = 0;
            for (int i = 0; i < nums.size(); i++) {
                if (nums[i] != 0) {
                    product *= nums[i];  
                } else {
                   zeros++; 
                }
            }
            if (zeros > 0) {
                for (int i = 0; i < nums.size(); i++) {
                    if (nums[i] == 0 && zeros == 1) {
                        nums[i] = product;
                    } else {
                        nums[i] = 0;
                    }
                }
            } else {
                for (int i = 0; i < nums.size(); i++) {
                    nums[i] = product / nums[i];  
                }
            }
            return nums;
        }
    };