50.数组剔除元素后的乘积

题目比较简单,只要算出数组中不包含本元素的其他元素乘积就行了。但是开头自己一直在犯傻,分了很多情况讨论当A[j]不等于A[i]的时候进行乘积,其中又包括等于0还是不等于0的情况。后来突然想到数组的话,只要下标不相等不就可以了么?所以直接AC,代码如下:

class Solution {
public:
    /*
     * @param nums: Given an integers array A
     * @return: A long long array B and B[i]= A[0] * ... * A[i-1] * A[i+1] * ... * A[n-1]
     */
    vector<long long> productExcludeItself(vector<int> &nums) {
        // write your code here
        vector<long long> b;
        long long result=1.0;
        if (nums.size()==1 && nums[0]==0) b.push_back(1);
        else{
        for(int i=0;i<nums.size();i++)
        {
           result=1.0;
           for(int j=0;j<nums.size();j++)
            {
                //if (nums[j]==0) result=0;
                if(j!=i) result=result*nums[j];
            }
         b.push_back(result);
        } }
     return b;
      }
};
posted @ 2017-12-13 12:23  MrYun  阅读(138)  评论(0)    收藏  举报