当前位置:实例文章 » 其他实例» [文章]力扣热门100题之除自身意外数组的成绩【中等】

力扣热门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` 的倍数后的乘积。请确保在实际应用中正确处理边界条件和异常情况。

其他信息

其他资源

Top