
思路:
先从左到右遍历,将每一个元素左边所有元素(不包括它自己)的乘积保存下来。
再从右往左遍历,将每一个元素右边所有元素(不包括它自己)的乘积保存下来。
把这两个数组对应元素相加即为所求。
class Solution {
public int[] productExceptSelf(int[] nums) {
int[] o1 = new int[nums.length];
for(int i=0;i<nums.length;i++)
{
if(i==0)
o1[i] = 1;
else
o1[i] = nums[i-1]*o1[i-1];
}
int[] o2 = new int[nums.length];
int[] output = new int[nums.length];
for(int i=nums.length-1;i>=0;i--)
{
if(i==nums.length-1)
o2[i] = 1;
else
o2[i] = nums[i+1]*o2[i+1];
output[i] = o1[i]*o2[i];
}
return output;
}
}
本文介绍了一种高效算法,用于计算数组中每个元素两侧元素乘积的组合结果,而不使用除法操作。通过两次遍历数组实现,第一次从左到右记录左侧元素的累积乘积,第二次从右到左记录右侧元素的累积乘积。
8万+

被折叠的 条评论
为什么被折叠?



