LeetCode刷题MEDIM篇Product of Array Except

题目
Given an> 1,an[i]is equal to theof all the[i].
:
Input:[1,2,3,4]Output: [24,12,8,6]
Note: solvein O(n).
up:
Could you solve it withspace ? (Theas extra space for theof space.)
十分钟尝试
【LeetCode刷题MEDIM篇Product of Array Except】本来第一反应,当前元素输出值应该是全部的除以当前元素,以为很完美可以处理,写完发现,忽略了一个0,如果有0我的代码不行,为了排除0,写了分支条件,还是不行 。

LeetCode刷题MEDIM篇Product of Array Except

文章插图
class Solution {public int[] productExceptSelf(int[] nums) {int[] output=new int[nums.length];int allProduct=1;int allProductExceptZero=1;//如果有0不对for(int i=0;i
正确解法
举例1 2 3 0 4,如果选择3,那么其实结果是左侧乘积*右侧乘积 。所以第一层循环,计算截止到某个元素的累计乘积结果,右侧,再一次循环,最后一个元素就是1,第二个就是nums[j],第三个right*=nums[j],利用right表示右侧的累计乘积结果 。所以代码如下:
class Solution {public int[] productExceptSelf(int[] nums) {int[] res=new int[nums.length];res[0]=1;for(int i=1;i=0;j--){res[j]*=right;right*=nums[j];}return res;}}