湖南网站推广电话,政务公开及网站建设意见,智慧软文发稿平台官网,广州营销型网站建设价格题目描述#xff1a;
给你一个整数数组 nums#xff0c;返回 数组 answer #xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。
题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。
请 不要使用除法#x…题目描述
给你一个整数数组 nums返回 数组 answer 其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。
题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。
请 不要使用除法且在 O(n) 时间复杂度内完成此题。 示例 1:
输入: nums [1,2,3,4]
输出: [24,12,8,6]示例 2:
输入: nums [-1,1,0,-3,3]
输出: [0,0,9,0,0]提示
2 nums.length 105-30 nums[i] 30输入 保证 数组 answer[i] 在 32 位 整数范围内 我的作答
第一次接触上三角和下三角的概念呃呃呃
class Solution(object):def productExceptSelf(self, nums)::type nums: List[int]:rtype: List[int]if not nums: return Nonepre [1]*len(nums)pre[0] nums[0]back [1]*len(nums)back[-1] nums[-1]result []for left in range(1, len(nums)):pre[left] pre[left-1]*nums[left] #下三角for right in range(len(nums)-2, -1, -1):back[right] back[right1]*nums[right] #上三角for i in range(len(nums)):if i0: result.append(back[1])elif ilen(nums)-1: result.append(pre[i-1])else:result.append(pre[i-1]*back[i1])return result 参考
其实在另一个三角的时候就可以乘积了
class Solution(object):def productExceptSelf(self, nums)::type nums: List[int]:rtype: List[int]ans, tmp [1] * len(nums), 1for i in range(1, len(nums)):ans[i] ans[i - 1] * nums[i - 1] # 下三角for i in range(len(nums) - 2, -1, -1):tmp * nums[i 1] # 上三角ans[i] * tmp # 下三角 * 上三角return ans