238. 除自身以外数组的乘积
2024-09-29 10:32:25
Problem: 238. 除自身以外数组的乘积
思路
在不能使用除法的情况下,考虑每个答案的组成方式:第i
位的结果为其前缀乘积和后缀乘积之积。离线求解前后缀乘积时间复杂度为$O(n)$,符合题目要求。
题目中给了个提示,可以在$O(1)$(不考虑返回数组)的情况下完成。但是完全不存储前后缀是没法在$O(n)$的复杂度下完成的,应该想到可以暂时把数据存在返回数组里。
这样,我们只需先计算一遍后缀积,然后在计算结果时,保留当前前缀和即可。
复杂度
- 时间复杂度: $O(n)$:遍历两次数组。
- 空间复杂度: $O(1)$:实际上是$O(n)$,如题目所说不考虑返回数组空间时$O(1)$。
Code
1 | class Solution { |