asp做网站用什么写脚本,营销网站开发系统,软件开发项目管理的常识,容桂网站建设找顺的除自身以外数组的乘积 给你一个整数数组 nums#xff0c;返回 数组 answer #xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法#xff0c… 除自身以外数组的乘积 给你一个整数数组 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] //使用了前缀积和后缀积的思想func productExceptSelf(nums []int) []int {n : len(nums)left : make([]int, n)right : make([]int, n)answer : make([]int, n)left[0] 1for i : 1; i n; i {left[i] left[i-1] * nums[i-1]}right[n-1] 1for i : n - 2; i 0; i-- {right[i] right[i1] * nums[i1]}for i : 0; i n; i {answer[i] left[i] * right[i]}return answer
}// 可以通过构建两个辅助数组来解决以达到 O(n) 的时间复杂度。// 算法步骤如下// 初始化两个辅助数组 left 和 right长度和原始数组 nums 相同。将 left[0] 和 right[n-1] 分别设为 1。
// 遍历原始数组 nums从左到右计算 left 数组其中 left[i] 表示 nums[i] 左侧所有元素的乘积。
// left[i] left[i-1] * nums[i-1]
// 遍历原始数组 nums从右到左计算 right 数组其中 right[i] 表示 nums[i] 右侧所有元素的乘积。
// right[i] right[i1] * nums[i1]
// 遍历原始数组 nums对于每个元素 nums[i]将 answer[i] 的值计算为 left[i] * right[i]。
// 返回最终的答案数组 answer。