企业如何找网络公司做网站,中卫市住房建设局网站,wordpress十大必备插件,松原市网站建设题目 给你一个整数数组 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不影响结果。
代码展示
class Solution {public int[] productExceptSelf(int[] nums) {int size nums.length;int[] ans new int[size];int[] left new int[size];left[0] 1;int[] right new int[size];right[size - 1] 1;for (int i 1; i size; i){left[i] nums[i - 1] * left[i - 1];}for (int i size - 2; i 0 ; i--){right[i] right[i 1] * nums[i 1];}for (int i 0; i size; i){ans[i] left[i] * right[i];}return ans;}
}