国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

[LeetCode] Product of Array Except Self

golden_hamster / 3452人閱讀

Problem

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).

Example

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.)

Solution
class Solution {
    public int[] productExceptSelf(int[] nums) {
        long product = 1;
        int[] res = new int[nums.length];
        for (int i = 0; i < nums.length; i++) {
        //so there are two special situations: one number or more than one number equals 0
            if (nums[i] != 0) product *= (long) nums[i];
            else {
                //here we consider if one number is 0
                //all other products should be 0
                Arrays.fill(res, 0);
                //*maybe* except for this one, lets create a method for it
                res[i] = getProduct(nums, i);
                //stop here and return, since we already got the correct result array
                //*and* no need to consider the other situation, it would be all 0"s
                return res;
            }
        } 
        for (int i = 0; i < res.length; i++) {
            res[i] = (int) (product / nums[i]);
        }
        return res;
    }
    public int getProduct(int[] nums, int k) {
        int product = 1;
        for (int i = 0; i < nums.length; i++) {
            if (i != k) product *= nums[i];
        }
        return product;
    }
}
Update 2018-9
//Solution without division

class Solution {
    public int[] productExceptSelf(int[] nums) {
        int n = nums.length;
        int[] res = new int[n];
        int[] dp = new int[n];
        int[] pd = new int[n];
        dp[0] = nums[0];
        for (int i = 1; i < n; i++) {
            dp[i] = dp[i-1] * nums[i];
        }
        pd[n-1] = nums[n-1];
        for (int i = n-2; i > 0; i--) {
            pd[i] = pd[i+1] * nums[i];
        }
        res[0] = pd[1];
        res[n-1] = dp[n-2];
        for (int i = 1; i < n-1; i++) {
            res[i] = dp[i-1] * pd[i+1];
        }
        return res;
    }
}

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/71105.html

相關(guān)文章

  • LeetCode 238 Product of Array Except Self

    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...

    henry14 評論0 收藏0
  • 【Python】LeetCode 238. Product of Array Except Self

    摘要:題目描述題目解析簡單來說就是對于數(shù)組中每一項,求其他項之積。算一遍全部元素的積再分別除以每一項要仔細(xì)考慮元素為零的情況。沒有零直接除下去。一個零零的位置對應(yīng)值為其他元素之積,其他位置為零。兩個以上的零全部都是零。 題目描述 Given an array of n integers where n > 1, nums, return an array output such that o...

    kaka 評論0 收藏0
  • [Leetcode] Product of Array Except Self 自身以外的數(shù)組乘積

    摘要:動態(tài)規(guī)劃復(fù)雜度時間空間思路分析出自身以外數(shù)組乘積的性質(zhì),它實(shí)際上是自己左邊左右數(shù)的乘積,乘上自己右邊所有數(shù)的乘積。所以我們可以用一個數(shù)組來表示第個數(shù)字前面數(shù)的乘積,這樣。同理,我們可以反向遍歷一遍生成另一個數(shù)組。 Product of Array Except Self Given an array of n integers where n > 1, nums, return an...

    rockswang 評論0 收藏0
  • [LeetCode] 238. Product of Array Except Self

    Problem 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 ...

    Loong_T 評論0 收藏0
  • 238. Product of Array Except Self

    問題: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)....

    劉永祥 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<