题解 | #构建乘积数组#
构建乘积数组
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不会用,还得补一补这方面的基础知识。
牛客刷题记录 文章被收录于专栏
记录自己的刷题记录,刷过的题的解法