Product of Array Except Self

来源:互联网 发布:美即黑面膜怎么样 知乎 编辑:程序博客网 时间:2024/05/29 10:15

Given an array of n integers where n > 1, nums, return an array output such that output[i] is equal to the product of all the elements of nums except nums[i].

Solve it without division and in O(n).

For example, given [1,2,3,4], return [24,12,8,6].

Follow up:

Could you solve it with constant space complexity? (Note: The output array does not count as extra space for the purpose of space complexity analysis.)

题目大意分析:就是从一个数组得到另外一个数组,转换规则是,除这个元素外的所有元素乘积,就是新数组本位置的值

class Solution {    public int[] productExceptSelf(int[] nums) {        int maxCount=1;         int zeroCount=0;//统计数组中有几个0        for(int i=0;i<nums.length;i++){            if(nums[i]==0){                zeroCount++;                continue;            }            maxCount*=nums[i];//算出除了0元素之外的元素乘积        }        for(int i=0;i<nums.length;i++){                    if(zeroCount==1){//如果只有一个0元素,那么结果数组中只有该位置数不为0                  if(nums[i]==0){                       nums[i]=maxCount;                       for(int j=0;j<nums.length;j++){                           if(j==i) {                                                continue;                           }                            nums[j]=0;                       }                       break;////如果这里不跳出的话,会导致上面的for循环重置的0会在外层for循环产生作用                  }            }else if(zeroCount>=2){//如果有两个0元素,那么结果集元素都为0                    for(int j=0;j<nums.length;j++){                        nums[j]=0;                    }             }else{//一个0元素都没有,那么用所有元素乘积的值除以该位置的元素                nums[i]=maxCount/nums[i];            }                            }        return nums;        }}


原创粉丝点击