238. 除自身以外数组的乘积

package leetcode;

public class demo_238 {
    public int[] productExceptSelf(int[] nums) {
        int[] left=new int[nums.length];
        int[] right=new int[nums.length];
        int res[]=new int[nums.length];
        //记录从左边开始的累计积
        left[0]=nums[0];
        for(int i=1;i<nums.length;i++) {
            left[i]=left[i-1]*nums[i];
        }
        //记录从右边开始的累计积
        right[nums.length-1]=nums[nums.length-1];
        for(int i=nums.length-2;i>-1;i--) {
            right[i]=right[i+1]*nums[i];
        }
        res[0]=right[1];
        res[nums.length-1]=left[nums.length-2];
        //结果为左边的累计积乘以右边的累计积
        for(int i=1;i<nums.length-1;i++) {
            res[i]=left[i-1]*right[i+1];
        }
        for (int i : res) {
            System.out.println(i);
        }
        return res;
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        demo_238 demo=new demo_238();
        int[] nums= {1,2,3,4};
        demo.productExceptSelf(nums);
    }

}

 

posted on 2022-04-26 11:06  一仟零一夜丶  阅读(6)  评论(0)    收藏  举报