给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。

示例:

[1,2,3,4]
[24,12,8,6]

说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题。  

Java实现:

class Solution {
    public int[] productExceptSelf(int[] nums) {
        int [] output = new int[nums.length];
        //  分为3种情况
        // 有1个零 有两个零  没有零

        int m = 1;  // 积累计

        int zerocount = 0;  //数组中零的个数

        for(int i = 0;i<nums.length;i++)
        {
            if(nums[i] == 0)
            {
                zerocount ++;
                continue;
            }
            m *= nums[i]; 
        }

        if(zerocount >1) return output;  // 假如有两个零以上(包括两个零),则可以直接返回,结果数组中所有元素都必为0

        for(int i = 0;i<nums.length;i++)
        {
            if(zerocount ==1)   // 有一个零或没有零的判断
            {
                 if(nums[i] == 0)
                {
                    output[i] = m;
                }else
                {
                    output[i] = 0;
                }

            }else
            {
                output[i] = m/nums[i];
            }        }
        return output;
    }
}

 

  

javascript 给定一个整形数组arr,已知其中所有的值都是非负的 给定一个整数数组nums,其中_i++