剑指 Offer 66. 构建乘积数组
Posted Billy Miracle
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指 Offer 66. 构建乘积数组相关的知识,希望对你有一定的参考价值。
思考:
他让计算两侧的乘积和,本来可以通过计算总乘积,除以当前位来计算,但是他说了不让使用除法,可以使用两个数组,分别存储从左侧向右的乘积,一个保存从右侧向左的乘积。每次拿出来使用就可以了。
代码:
class Solution
public:
vector<int> constructArr(vector<int>& a)
vector<int> front, rear, answer;
if (a.size() == 0)
return answer;
if (a.size() == 1)
answer.push_back(1);
return answer;
for (int i = 0; i < a.size() - 1; ++i)
if (i == 0)
front.push_back(a[0]);
rear.push_back(a[a.size() - 1]);
else
front.push_back(a[i] * front[i - 1]);
rear.push_back(a[a.size() - 1 - i] * rear[i - 1]);
for (int i = 0; i < a.size(); ++i)
if (i == 0)
answer.push_back(rear[a.size() - 2]);
else if (i == a.size() - 1)
answer.push_back(front[a.size() - 2]);
else
answer.push_back(front[i - 1] * rear[a.size() - 2 - i]);
return answer;
;
以上是关于剑指 Offer 66. 构建乘积数组的主要内容,如果未能解决你的问题,请参考以下文章