- 题目:给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。
- 思路:
- 两个乘积数组,一个从前往后,一个从后往前
- 启发或者坑
- 注意边界,B的第一个元素和最后一个元素
- leetcode也有这个题目,238题号
- 我落入了index的坑,有一处index没写对,用leetcode来debug,解决了
- 代码
class Solution { public: vector<int> multiply(const vector<int>& A) { vector<int> before; vector<int> after; vector<int> B; int res = 1; int afterRes = 1; for (int i = 0; i < A.size(); i++) { res = res*A[i]; before.push_back(res); afterRes = afterRes *A[A.size()-1-i]; after.push_back(afterRes); } B.push_back(after[A.size()-2]); for (int i = 1; i < A.size()-1; i++) { B.push_back(before[i-1]*after[A.size()-i-2]); } B.push_back(before[A.size()-2]); return B; } };
剑指offer 39.构建乘积数组
猜你喜欢
转载自blog.csdn.net/Alexia23/article/details/103869354
今日推荐
周排行