给定一个长度为 n 的数组 nums ,返回一个数组 res,res[i]是nums数组中除了nums[i]本身以外其余所有元素的乘积,即:
1.请不要使用除法,并且在 O(n) 时间复杂度内完成此题。
2.题目数据保证res数组的元素都在 32 位整数范围内。
3.有O(1)空间复杂度的做法,返回的res数组不计入空间复杂度计算。
数据范围:
[1,2,3,4]
[24,12,8,6]
res[0]=2*3*4=24 res[1]=1*3*4=12 res[2]=1*2*4=8 res[3]=1*2*3=6
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param nums int整型一维数组 # @return int整型一维数组 # class Solution: def timesExceptSelf(self , nums: List[int]) -> List[int]: # write code here dp_l = nums.copy() for i in range(1, len(dp_l)): dp_l[i] = dp_l[i-1] * nums[i] dp_r = nums.copy() for i in range(len(dp_r)-1 -1, -1, -1): dp_r[i] = dp_r[i + 1] * nums[i] res = nums.copy() res[0] = dp_r[1] res[-1] = dp_l[-2] for i in range(1, len(nums)-1): res[i] = dp_l[i-1] * dp_r[i + 1] return res