📜  数组中非重复(不同)元素的乘积(1)

📅  最后修改于: 2023-12-03 15:26:11.683000             🧑  作者: Mango

数组中非重复元素的乘积

在数组中找出所有不同的元素,求它们的乘积。如果元素有重复,只计算一次。

解法一

第一种解法是使用哈希表来记录每个元素出现的次数,然后再遍历一遍数组,计算所有不同元素的乘积。

def distinct_nonzero_product(nums):
    counts = {}
    for num in nums:
        counts[num] = counts.get(num, 0) + 1
    product = 1
    for num, count in counts.items():
        if count == 1:
            product *= num
    return product

这种解法的时间复杂度是 $O(n)$,因为需要遍历数组两次,同时使用哈希表来记录每个元素的出现次数。

解法二

第二种解法是先对数组进行排序,然后再遍历一次数组,计算所有不同元素的乘积。

def distinct_nonzero_product(nums):
    nums.sort()
    product = 1
    for i in range(len(nums)):
        if i == 0 or nums[i] != nums[i - 1]:
            product *= nums[i]
    return product

这种解法的时间复杂度是 $O(n log n)$,因为需要先对数组排序,然后再遍历一次数组。

总结

这两种解法的时间复杂度都比较优秀,但是第二种解法的实现更简单,因此更推荐第二种解法。