238 - Product of Array Except Self

来源:互联网 发布:EF值simpson算法 编辑:程序博客网 时间:2024/06/07 02:55

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

Solve it without division and in O(n).

For example, given [1,2,3,4], return [24,12,8,6].

Follow up:

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

C++ 代码如下(涵盖测试代码):

#include <iostream>#include <vector>using namespace std;class Solution {public:    vector<int> productExceptSelf(vector<int>& nums) {        if(nums.size() <= 0)                return nums;        int products = 1;        vector<int> zeroNum;        for(int i = 0; i < nums.size(); i++)                if(nums[i] != 0)                        products *=  nums[i];                else {                        zeroNum.push_back(i);                }        //cout << "output" << endl;         vector<int> result(nums.size(), 0);        if(zeroNum.size() >= 2) {                return result;        }        if(zeroNum.size() == 1) {                result[zeroNum[0]] = products;                return result;        }        for(int i = 0; i < nums.size(); i++) {                result[i] = products/nums[i] ;        }        return result;    }};int main() {        vector<int> nums;        nums.push_back(0);        nums.push_back(2);        nums.push_back(0);        nums.push_back(4);        Solution s;        vector<int> r = s.productExceptSelf(nums);        for(int i = 0; i < r.size(); i++)                cout << r[i] << endl;}

注:提交两遍才过,第一遍忘记了考虑整个数组中有 0 的情况,加上判断,就通过了。

思路很简单,关键是细节。


0 0
原创粉丝点击