这个题我开始没看懂,呜呜呜……
解释一下题目,意思就是有一个数组A和一个数组B。B的每一项等于A[0]*A[1]……A[i-1]*a[i+1]……A[n-1];
根据题目的意思,A也有n-1项,因此看B的计算表达式除了中间A[i-1]*a[i+1]这里少了一个A[i]没有相乘之外别的项都乘了。因此就是说B[i]就是对A的每一项相乘除了A[i]。
理解了题目就好做了。
1 class Solution { 2 public: 3 vector multiply(const vector & A) { 4 int len = A.size(); 5 vector res(len); 6 if (A.empty()) 7 return res; 8 res[0] = 1; 9 for (int i = 1; i < len; i++)10 {11 res[i] = res[i - 1] * A[i - 1];//计算C[i]12 }13 int temp = 1;14 for (int i = len - 2; i >= 0; --i)15 {16 temp *= A[i + 1];//计算D[i]17 res[i] *= temp;//计算最终的数组B[i]=C[i]*D[i]18 }19 return res;20 }21 };