LeetCode238题解

该文章介绍了一种解决算法问题的方法,即在不允许使用除法的情况下,通过计算数组元素的前缀和后缀乘积来找出每个元素在数组中除去它本身之外的所有元素的乘积。这个方法依赖于对数组的两次遍历,一次计算前缀乘积,另一次计算后缀乘积,然后将两者对应相乘得到答案。由于题目保证了所有元素的前缀和后缀乘积在32位整数范围内,因此这种方法确保了结果的有效性和在O(n)的时间复杂度内完成任务。
摘要由CSDN通过智能技术生成

238. 除自身以外数组的乘积

题目

给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积

题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。

不要使用除法,且在 O(n) 时间复杂度内完成此题。


首先,这道题看似很简单,貌似只要将数组中所有的数相乘然后除以数组中的元素就行,但是题目中明确规定不能使用除法,所以这种思路肯定不行。因此我们还需要观察题目中的信息可以提供我们别的思路。

恰好题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内这句话

给了我们思路,是否我们可以将数组中的每一个元素的前缀与后缀相乘从而得到结果。

例如:array[2,4,1,3,5];数组长度为numsSize;
1、首先3我们可以先把每个元素的前缀算出来存进一个数组L[];
2、然后我们可以先把每个元素的后缀算出来存进一个数组R[];
3、最后我们分别将这两个数组中的元素相乘在放到另一个数组answer[];

最后再返回answer[];即可;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值