首页 > 其他分享 >LeetCode: 238. Product of Array Except Self

LeetCode: 238. Product of Array Except Self

时间:2022-12-05 18:03:41浏览次数:48  
标签:count Product nums Self Except iter product products


LeetCode: 238. Product of Array Except Self

题目描述

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.)

解题思路

  1. 如果数组中没有 ​​0​​​,则计算数组中所有数的乘积 ​​P​​​。除去第 ​​i​​​ 位元素的乘积位 ​​P/nums[i]​
  2. 如果数组中有一个 ​​0​​,则单独计算除开这一位的乘积。而其他位的 Product of Array Except Self 都为 ​​0​
  3. 如果数组中有两个及以上的 ​​0​​,Product of Array Except Self 都为 ​​0​

AC 代码

class Solution {
public:
vector<int> productExceptSelf(vector<int>& nums) {
vector<int> products;

long long int total_product = 1;
int zero_count = 0;
for(auto iter = nums.begin(); iter != nums.end(); ++iter)
{
if(*iter == 0)
{
++zero_count;
}
else
{
total_product *= (*iter);
}
}

for(auto iter = nums.begin(); iter != nums.end(); ++iter)
{
if(zero_count == 0)
{
products.push_back(total_product/(*iter));
}
else if(zero_count == 1 && *iter == 0)
{
products.push_back(total_product);
}
else
{
products.push_back(0);
}
}

return products;
}
};


标签:count,Product,nums,Self,Except,iter,product,products
From: https://blog.51cto.com/u_15903085/5913209

相关文章