zoukankan      html  css  js  c++  java
  • 给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。-----力扣

    给定长度为 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;
    }
    }

  • 相关阅读:
    原型污染
    C#之抛异常
    为什么['1', '7', '11'].map(parseInt) returns [1, NaN, 3]?
    Linux
    Linux
    Linux
    Linux
    Linux
    Linux
    其他
  • 原文地址:https://www.cnblogs.com/spiderljx/p/12142771.html
Copyright © 2011-2022 走看看