链接:https://leetcode.com/problems/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 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.)
Subscribe to see which companies asked this question
题目意思:开始理解这个题目的意思还有点难,后面总算是搞懂了,给你一个数组,然后返回另外一个结果数组,这个结果数组每一项的值都是除了本身以外的乘积。题目要求不准使用乘法,并且空间复杂度要是O(1)。
思路:我们从右往左遍历一次,得到位置i右边的乘积把值记录在数组中,遍历一次之后,从左往右又再次遍历又可以得到i左边的乘积并且把值和以前的更新记录。这样就完成了我们的结果,代码如下:
public class Solution {
public int[] productExceptSelf(int[] nums) {
int n=nums.length;
int[] res=new int[n];
res[n-1]=1;
for(int i=n-2;i>=0;i--){
res[i]=res[i+1]*nums[i+1];
}
int left=1;//用来记录left的值
for(int i=0;i<n;i++){
res[i]*=left;
left*=nums[i];
}
return res;
}
}