题解 | #构建乘积数组#

构建乘积数组

http://www.nowcoder.com/practice/94a4d381a68b47b7a8bed86f2975db46

C++
思路:感觉理解题意之后就很简单,数组B中B[i]的值其实就是数组A中除了A[i]之外所有数据的乘积。如果可以用除法的话,计算A中所有数据的乘积,然后使用一个for循环除去A[i]的值即可。现在题目要求不使用除法,那么我就想到以i为结点,采用2个for循环分别计算A[0]至A[i-1]的乘积和A[i+1]至A[n-1]的乘积,然后再把二者相乘即可。代码如下:

class Solution {
public:
    vector<int> multiply(const vector<int>& A) {
        //const vector<int>& B={0};
        vector<int>B(A.size(),1);//定义数组B,长度为A.size
        B[0]=1;//数组B的第一个元素设为1
        for(int i=0;i<A.size();i++)
        {
            int num1=1;
            int num2=1;
            for(int j=0;j<i;j++)
            {
                num1*=A[j];
            }
            for(int j=i+1;j<A.size();j++)
            {
                num2*=A[j];
            }
            B[i]=num1*num2;
        }
        return B;
    }
};

注:我个人的问题在于vector不会用,还得补一补这方面的基础知识。

牛客刷题记录 文章被收录于专栏

记录自己的刷题记录,刷过的题的解法

全部评论

相关推荐

Natrium_:这时间我以为飞机票
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务