构建乘积数组

来源:互联网 发布:明年今日 知乎 编辑:程序博客网 时间:2024/05/22 12:55

题目描述
给定一个数组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]。不能使用除法。
思路:
第一遍从头到尾遍历,在第i个位置保存第i个数前面数的乘积,第二遍从尾到头遍历,定义一个值保存后面数的乘积,在第i个位置乘上第i个数后面数的乘积。

class Solution {public:    vector<int> multiply(const vector<int>& A) {        vector<int> ans;        int len = A.size();        if (len == 0) return ans;        ans.push_back(1);        for (int i = 0; i < len - 1; ++i) {            ans.push_back(ans.back() * A[i]);        }        int temp = 1;        for (int i = len - 1; i >= 0; --i) {            ans[i] = ans[i] * temp;            temp = temp * A[i];        }        return ans;    }};
原创粉丝点击