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).
ExampleFor 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;
}
}
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/71105.html
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...
摘要:题目描述题目解析简单来说就是对于数组中每一项,求其他项之积。算一遍全部元素的积再分别除以每一项要仔细考虑元素为零的情况。没有零直接除下去。一个零零的位置对应值为其他元素之积,其他位置为零。两个以上的零全部都是零。 题目描述 Given an array of n integers where n > 1, nums, return an array output such that o...
摘要:动态规划复杂度时间空间思路分析出自身以外数组乘积的性质,它实际上是自己左边左右数的乘积,乘上自己右边所有数的乘积。所以我们可以用一个数组来表示第个数字前面数的乘积,这样。同理,我们可以反向遍历一遍生成另一个数组。 Product of Array Except Self Given an array of n integers where n > 1, nums, return an...
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 ...
问题: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)....
阅读 1916·2023-04-25 14:28
阅读 1942·2021-11-19 09:40
阅读 2845·2021-11-17 09:33
阅读 1432·2021-11-02 14:48
阅读 1754·2019-08-29 16:36
阅读 3369·2019-08-29 16:09
阅读 2964·2019-08-29 14:17
阅读 2422·2019-08-29 14:07