leetcode 238
思路
如果想要不用除法运算,计算i
位置上的结果时,需要i前面所有的乘积,和i
后面所有的乘积。分别用两个数组存储,并计算顺序以及逆序的乘积:
这样只需要遍历三遍就可以求得结果。
如果想要节省空间,可以把前缀乘积和后缀乘积计算结果直接放到相应位置的output
上面。
第一遍存储上前缀乘积,其中i
位置放i
之前的乘积,即可以先放上output
再计算prefix *= nums[i]
:
第二遍计算后缀乘积,倒序计算,直接更新到output
上:
代码
class Solution: def productExceptSelf(self, nums: List[int]) -> List[int]: n = len(nums) prefix, postfix = 1, 1 output = [1] * n for i in range(n): output[i] = prefix prefix *= nums[i] for j in range(n - 1, -1, -1): output[j] *= postfix postfix *= nums[j] return output
本文来自博客园,作者:fakee,转载请注明原文链接:https://www.cnblogs.com/someonefake/p/18212893
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步