LeetCode(238) Product of Array Except Self

原创 2015年11月18日 14:47:38

题目

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

分析

给定一个数组序列,得到一个新的数组,新数组的output[i]位置元素值等于原数组中除了nums[i]外所有其他元素的乘积。

并且要求时间复杂度为O(n)

我们最先想到的肯定是二重循环,计算每个位置处的 output[i];但是,这样处理复杂度为O(n^2),不满足要求;

所以采取其它方法,分为两个步骤处理:

  1. 正序循环一次,对每个i位置的元素得到ret[i] = nums[0] * nums[1] * … *nums[i-1]
  2. 倒序循环一次,对每个i位置的元素当前乘积ret[i] *= nums[i+1] … nums[sz-1]

AC代码

class Solution {
public:
    vector<int> productExceptSelf(vector<int>& nums) {
        if (nums.empty())
            return vector<int>();

        int sz = nums.size();
        vector<int> ret(sz, 0);

        //对每个i位置的元素得到ret[i] = nums[0] * nums[1] * ... *nums[i-1]
        ret[0] = 1;
        for (int i = 1; i < sz; ++i)
        {
            ret[i] = ret[i - 1] * nums[i-1];
        }//for

        //对每个i位置的元素当前乘积ret[i] *= nums[i+1] ... nums[sz-1]
        int tmp = 1;
        for (int i = sz - 1; i >= 0; --i)
        {
            ret[i] *= tmp;
            tmp *= nums[i];
        }
        return ret;
    }
};

GitHub测试程序源码

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

<LeetCode OJ> 238. Product of Array Except Self

238. Product of Array Except Self My Submissions Question Total Accepted: 31438 Total Submission...

LeetCode笔记:238. Product of Array Except Self

计算除了该元素以外所有元素的乘积

LeetCode-238. Product of Array Except Self (JAVA)(构建乘积数组)

LeetCode-238. Product of Array Except Self (JAVA)(构建乘积数组) 剑指offer

Leetcode_238_Product of Array Except Self

本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/48598939 Given an array of...

LeetCode- 238. Product of Array Except Self

Problem: Given an array of n integers where n > 1, nums, return an array output such that outpu...

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

LeetCode 238 Product of Array Except Self(除自身外数组其余数的乘积)

翻译给定一个有n个数字的数组nums,其中n大于1,返回一个数组使得output[i]等于除nums[i]外所有元素的乘积。不用分治并且在O(n)复杂度下解决这个问题。例如,给定[1, 2, 3, 4...
  • NoMasp
  • NoMasp
  • 2016年03月05日 20:38
  • 1996

LeetCode 238. Product of Array Except Self 题解(C++)

LeetCode 238. Product of Array Except Self 题解(C++)题目描述 Given an array of n integers where n > 1, num...

LeetCode 238. Product of Array Except Self 解题报告

LeetCode 238. Product of Array Except Self 解题报告

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 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LeetCode(238) Product of Array Except Self
举报原因:
原因补充:

(最多只允许输入30个字)