郑州网站模板哪里有,中国建设银行网站软件下载,南京奥美广告公司,辽宁工程建设信息网诚信库题目
给你一个整数数组 nums#xff0c;返回 数组 answer #xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。
题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。
请 不要使用除法#xff0c;且在 O(n) 时…题目
给你一个整数数组 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 位 整数范围内 进阶你可以在 O(1) 的额外空间复杂度内完成这个题目吗 出于对空间复杂度分析的目的输出数组 不被视为 额外空间。
题解
class Solution(object):def productExceptSelf(self, nums)::type nums: List[int]:rtype: List[int]n len(nums)answer [1] * nleft_product 1for i in range(n):answer[i] left_productleft_product * nums[i]right_product 1for i in range(n - 1, -1, -1):answer[i] * right_productright_product * nums[i]return answer
代码说明 第一次遍历从左到右遍历数组计算每个位置左边所有元素的乘积并存储在一个数组 left 中。 第二次遍历从右到左遍历数组计算每个位置右边所有元素的乘积并存储在一个数组 right 中。 最终结果将 left 和 right 数组对应位置相乘得到最终的结果。