输入数组[ 1, 2, 3, 4]
输出数组[ 24, 12, 8, 6]
解题思路
通过两次遍历,然后把两次遍历所求的乘积加起来,就可以得到想要的答案了。如下图
代码
#include <iostream>
#include <vector>
using namespace std;
vector<int> func(vector<int> &vec)
{
int a = 1;
vector<int> re(vec.size(), 1);
for(int i = 1; i<vec.size(); ++i)
{
a *= vec[i-1];
re[i]=a;
}
a = 1;
for(int i = vec.size() - 2; i>=0; --i)
{
a *= vec[i+1];
re[i]*=a;
}
return re;
}
int main(){
vector<int> a = {1,2,3,4};
vector<int> &&re = func(a);
for(auto &&i:re){
cout << i << endl;
}
system("pause");
return 0;
}