题目要求复杂度为O(n),且不能用除法
那算从左和从右开始乘的成绩,然后算到某一位,直接找左边的乘积和右边的乘积,乘起来就行
class Solution {
public:
vector<int> productExceptSelf(vector<int>& nums) {
vector<int> l,r,result;
int tl=1,tr=1;
for(int i=0;i<nums.size();i++)
{
tl*=nums[i];
tr*=nums[nums.size()-i-1];
l.push_back(tl);
r.push_back(tr);
}
for(int i=0;i<nums.size();i++)
{
if(i==0)
{
result.push_back(r[nums.size()-2]);
}
else if(i==nums.size()-1)
{
result.push_back(l[nums.size()-2]);
}
else
{
result.push_back(l[i-1]*r[nums.size()-i-2]);
}
}
if(nums.size()==1)
return nums;
return result;
}
};