LeetCode:Product of Array Except Self
Product of Array Except Self
題目描述:
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]
.
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.)
思路:
基本思路:把所有元素相乘,再除以對應位置的元素數字,便得到除了自身元素之外,其他所有元素的乘積。
例外情況:若自身元素為0,則不能作為除數。
解決辦法:記錄所有元素的乘積product,非0元素的乘積pro,0元素個數cnt。
a:若0元素個數>=2,所求所有乘積都為0;
b:若自身元素不為0,且0元素個數<2,使用product/自身元素,獲得乘積。
c:若自身元素為0,且0元素個數<2, pro就是所求的乘積。
程式碼:
class Solution {
public:
vector<int> productExceptSelf(vector<int>& nums) {
int n = nums.size();
int product = 1;
int pro0 = 1;
int cnt0 = 0;
for(int i = 0; i < n; i ++)
{
int num = nums[i];
if(num != 0)
product *= num;
else
++cnt0;
pro0 *= num;
}
for(int i = 0; i < n; i ++)
{
if(cnt0 > 1)
nums[i] = 0;
else
{
int num = nums[i];
if(num != 0)
{
nums[i] = pro0/nums[i];
}
else
{
nums[i] = product;
}
}
}
return nums;
}
};
相關文章
- Leetcode 238. Product of Array Except SelfLeetCode
- [LeetCode] 238. Product of Array Except SelfLeetCode
- LeetCode C++ 1464. Maximum Product of Two Elements in an Array【Array/Sort】簡單LeetCodeC++
- Leetcode Maximum Product SubarrayLeetCode
- Leetcode: Self CrossingLeetCodeROS
- Leetcode - Self CrossingLeetCodeROS
- Leetcode-Maximum Product SubarrayLeetCode
- LeetCode-Self CrossingLeetCodeROS
- LeetCode-Maximum Product of Word LengthsLeetCode
- [leetCode][001] Maximum Product SubarrayLeetCode
- Leetcode Sort ArrayLeetCode
- LeetCode | 152. Maximum Product SubarrayLeetCode
- Rotate Array@LeetCodeLeetCode
- Leetcode - Patching ArrayLeetCode
- LeetCode-Rotate ArrayLeetCode
- LeetCode-Shuffle an ArrayLeetCode
- 【LeetCode】Self Crossing(335)LeetCodeROS
- [LeetCode/LintCode] Largest Palindrome ProductLeetCode
- LeetCode-Pathcing ArrayLeetCode
- Leetcode Search in Rotated Sorted ArrayLeetCode
- Leetcode Merge Sorted ArrayLeetCode
- leetcode刷題--Rotate ArrayLeetCode
- LeetCode Kth Largest Element in an ArrayLeetCode
- Leetcode 33 Search in Rotated Sorted ArrayLeetCode
- Leetcode Search in Rotated Sorted Array IILeetCode
- leetcode Remove Duplicates from Sorted ArrayLeetCodeREM
- Leetcode-Merge Sorted ArrayLeetCode
- Leetcode-Search in Rotated Sorted ArrayLeetCode
- Search in Rotated Sorted Array leetcode javaLeetCodeJava
- LeetCode Patching Array All In OneLeetCode
- LeetCode之Squares of a Sorted Array(Kotlin)LeetCodeKotlin
- LeetCode Shuffle an Array(打亂陣列)LeetCode陣列
- [LeetCode] 852. Peak Index in a Mountain ArrayLeetCodeIndexAI
- LeetCode之Sort Array By Parity(Kotlin)LeetCodeKotlin
- Leetcode 26 Remove Duplicates from Sorted ArrayLeetCodeREM
- Leetcode 442. Find All Duplicates in an ArrayLeetCode
- Leetcode 88. Merge Sorted ArrayLeetCode
- [leetcode] 1394. Find Lucky Integer in an ArrayLeetCode