Leetcode 238. Product of Array Except Self
238. Product of Array Except Self
Total Accepted: 51070 Total Submissions: 116543 Difficulty: Medium
Given an array of n integers where n > 1, nums
, return an array output
such that output[i]
is equal to the product of all the elements of nums
except nums[i]
.
Solve it without division and in O(n).
For example, given [1,2,3,4]
, return [24,12,8,6]
.
Follow up: Could you solve it with constant space complexity? (Note: The output array does not count as extra space for the purpose of space complexity analysis.)
思路:product存储的是所有不为0的数的积。注意有0、1、2个0的情况。
(1) 有0个0:v[i]=product/nums[i];
(2) 有1个0:nums[i]==0,v[i]=product;nums[i]!=0,v[i]=0;
(3) 有2个0:任意i,v[i]=0
代码:
1 class Solution { 2 public: 3 vector<int> productExceptSelf(vector<int>& nums) { 4 long long product=1; 5 int i,num=0,pos=-1; 6 for(i=0;i<nums.size();i++){ 7 if(nums[i]==0){ 8 num++; 9 pos=i; 10 continue; 11 } 12 product=product*nums[i]; 13 } 14 vector<int> v(nums.size(),0); 15 if(num==1){ 16 v[pos]=product; 17 } 18 if(num==0){ 19 for(i=0;i<nums.size();i++){ 20 v[i]=product/nums[i]; 21 } 22 } 23 return v; 24 } 25 };