题解 | #构建乘积数组#

构建乘积数组

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不会用,还得补一补这方面的基础知识。

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

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

全部评论

相关推荐

10-28 11:04
已编辑
美团_后端实习生(实习员工)
一个2人:我说几个点吧,你的实习经历写的让人觉得毫无含金量,你没有挖掘你需求里的 亮点, 让人觉得你不仅打杂还摆烂。然后你的简历太长了🤣你这个实习经历看完,估计没几个人愿意接着看下去, sdk, 索引这种东西单拎出来说太顶真了兄弟,好好优化下简历吧
点赞 评论 收藏
分享
孤寡孤寡的牛牛很热情:为什么我2本9硕投了很多,都是简历或者挂,难道那个恶心人的测评真的得认真做吗
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务