赞
踩
如题:
对于一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。
要求:不要使用除法,且在 O(n) 时间复杂度内完成此题。
题解:
要求1:不能使用除法,那只能相乘,例如对于nums = 【1,2,3,4】
这样一个数组,求 0 号位的值,则只能使用nums[1]*nums[2]*nums[3]
要求2:在O(n)时间内,则不可以嵌套循环。
所以解法如下:
from typing import List class Solution: def productExceptSelf(self, nums: List[int]) -> List[int]: l = [nums[0]] size = len(nums) if size == 0: return 0 # 求从左边开始递增的乘积 r = [nums[size-1]] for index in range(1,size-1): multipy = l[index-1]*nums[index] l.append(multipy) # 求从右边开始递减的乘积 for index in range(size-2,0,-1): multipy = r[size-2-index]*nums[index] r.append(multipy) # 用index左边递增的乘积 * 右边递减的乘积 res = [r[-1]] for index in range(1,size-1): multipy = l[index-1]*r[size-2-index] res.append(multipy) res.append(l[-1]) return res
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。