238. 除自身以外数组的乘积c++

给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。

示例:

输入: [1,2,3,4]
输出: [24,12,8,6]

说明: 不要使用除法,且在 O(n) 时间复杂度内完成此题。

就是新建两个数组,前一个数组pre第i位存原数组i位之前所有数的乘积复杂度n;第二个after存第i位之后的乘积,复杂度n,最后遍历数组,计算数组pre[i]*after[i]就是ans[i]。三个循环并列,复杂度O(N).

class Solution {
public:
    vector<int> productExceptSelf(vector<int>& nums) {
    int s=1;
	int rs=1;
	int n=nums.size();
	vector<int>pre(n);
	vector<int>after(n);
        vector<int>output(n);
	for(int i=1;i<=n-1;i++)
	{
		rs=rs*nums[n-i];
		after[n-i-1]=rs;
		s=s*nums[i-1];
		pre[i]=s;
	}
	after[n-1]=1;
	pre[0]=1;
	for(int i=0;i<=n-1;i++)
	{
		output[i]=pre[i]*after[i];
	}
	return output;
}
};

猜你喜欢

转载自blog.csdn.net/HeXiQuan123/article/details/80807956
今日推荐