力扣热门100题之除自身意外数组的成绩【中等】
发布人:shili8
发布时间:2025-03-11 16:39
阅读次数:0
**力扣热门100题之除自身意外数组的成绩**
**问题描述**
给定一个整数数组 `nums` 和一个整数 `k`,请返回 `nums` 中所有元素的乘积,除去 `k` 的倍数。
**示例1**
输入:`nums = [3,4,2]`, `k =2`
输出:`12`
解释:数组 `[3,4,2]` 中所有元素的乘积为 `3*4*2=24`。由于 `2` 是 `2` 的倍数,因此我们将其除去,得到最终结果 `12`。
**示例2**
输入:`nums = [1,2,3,4,5]`, `k =3`
输出:`20`
解释:数组 `[1,2,3,4,5]` 中所有元素的乘积为 `1*2*3*4*5=120`。由于 `3` 是 `3` 的倍数,因此我们将其除去,得到最终结果 `20`。
**解决方案**
### 方法1:使用乘积和
def productExceptSelf(nums, k): n = len(nums) # 计算所有元素的乘积 total_product =1 for num in nums: total_product *= num # 计算除去 k 的倍数后的乘积 result =0 for i in range(n): if nums[i] % k !=0: result += total_product // nums[i] return result
### 方法2:使用哈希表
def productExceptSelf(nums, k): n = len(nums) # 计算除去 k 的倍数后的乘积 result =1 count = {} for num in nums: if num % k ==0: count[num] = count.get(num,0) +1 for num in nums: if num not in count or count[num] >1: result *= num return result
### 方法3:使用数学推理
def productExceptSelf(nums, k): n = len(nums) # 计算除去 k 的倍数后的乘积 result =1 for i in range(n): if nums[i] % k !=0: result *= nums[i] return result
**总结**
本题目要求计算一个数组中所有元素的乘积,除去某个数字 `k` 的倍数。我们提供了三种不同的解决方案:使用乘积和、哈希表和数学推理。每种方法都有其优点和缺点,我们需要根据具体情况选择最合适的方法。
**注意**
本题目中,`nums` 是一个整数数组,而 `k` 是一个整数。我们需要计算除去 `k` 的倍数后的乘积。请确保在实际应用中正确处理边界条件和异常情况。