除自身以外数组的乘积
大约 1 分钟
除自身以外数组的乘积
思路分析
示例 1:
输入: nums = [1,2,3,4]
输出: [24,12,8,6]
令结果集为数组res;
res[i] 等于除i下表元素本身外,小于i下表的元素乘积 * 大于i下标元素的乘积,因此可以定义两个数组pre[],post[],pre保存i左边元素的乘积,post保存i右边元素的乘积;因此可得res[i] = pre[i] * post[i];
代码实现
java实现
public class PoductExceptSelf {
public static void main(String[] args) {
int arr[]={1,2,3,4};
int[] res = productExceptSelf(arr);
System.out.println(Arrays.toString(res));
}
/**
* 输入: nums = [1,2,3,4]
* 输出: [24,12,8,6]
* @author yourname
* @date 18:51 2024/12/26
* @param nums
* @return int[]
**/
public static int[] productExceptSelf(int[] nums) {
if(nums == null || nums.length == 0){
return null;
}
int []pre = new int[nums.length];
int []post = new int[nums.length];
pre[0] = 1;
post[nums.length-1] = 1;
/*先求左边的值*/
for (int i=1;i<nums.length;i++){
pre[i] = pre[i-1]*nums[i-1];
}
/*求右边的值*/
for(int j=nums.length-2;j>=0;j--){
post[j] = post[j+1]*nums[j+1];
}
int res[] = new int[nums.length];
for(int i=0;i<nums.length;i++){
res[i] = pre[i]*post[i];
}
return res;
}
}