238. Product of Array Except Self

2018/10/02 leetcode 共 779 字,约 3 分钟

title

problem link

Given an array nums of n integers where n > 1, return an array output such that output[i] is equal to the product of all the elements of nums except nums[i].

Example:

Input:  [1,2,3,4]
Output: [24,12,8,6]

Note: Please solve it without division and in O(n).

Follow up:

Could you solve it with constant space complexity? (The output array does not count as extra space for the purpose of space complexity analysis.)

solution

方法1: 求出整个数组和积 然后对与每个数的答案,就是这个数组的积除以这个数

方法2: 采用前缀和数组的思路我们用一个数组记录nums0 nums1 …numsi-1,再记录numsi+1 … * numsn-1,将这两个数相乘即可获得resi。


class Solution {
public:
	vector<int> productExceptSelf(vector<int>& nums) {
		vector<int> d(nums.size());
		d[0] = 1;
		for (int i = 1; i < nums.size(); i++) {
			d[i] = nums[i-1] * d[i - 1];
		}
		int right = 1;
		for (int i = nums.size() - 1; i >= 0; i--) {
			d[i] = right * d[i];
			right *= nums[i];
		}
		return d;
	}
};

Search

    Table of Contents