1.题目描述
2.思路
详细例子:
定义一个左数组,定义一个右边数组。刚开始左数组的第一个元素是固定的=1,就是等于第一个元素左边的元素的乘积。右数组最后一个元素为1,等于最后一个元素最右边的元素的乘积。
3.代码实现
方法一:带测试用例
import java.util.Arrays;
public class H238 {
public int[] productExceptSelf(int[] nums) {
int n=nums.length;
int[] answers=new int[n];
int[] left=new int[n];//除当前元素的左区间
int[] right=new int[n];//除当前元素的右区间
left[0]=1;
for(int i=1;i<n;i++)
{
left[i]=nums[i-1]*left[i-1];
}
right[n-1]=1;
for(int i=n-2;i>=0;i--)
{
right[i]=right[i+1]*nums[i+1];
}
for(int i=0;i<n;i++)
{
answers[i]=left[i]*right[i];//answer是一个一维数组
}
return answers;
}
public static void main(String[] args)
{
H238 test04=new H238();
int[] nums={1,2,3,4};
int[] res=test04.productExceptSelf(nums);
System.out.println(Arrays.toString(res));
}
}
方法二:不带测试用例
class Solution {
public int[] productExceptSelf(int[] nums) {
int n=nums.length;
int[] answers=new int[n];
int[] left=new int[n];//除当前元素的左区间
int[] right=new int[n];//除当前元素的右区间
left[0]=1;
for(int i=1;i<n;i++)
{
left[i]=nums[i-1]*left[i-1];
}
right[n-1]=1;
for(int i=n-2;i>=0;i--)
{
right[i]=right[i+1]*nums[i+1];
}
for(int i=0;i<n;i++)
{
answers[i]=left[i]*right[i];//answer是一个一维数组
}
return answers;
}
}