Algorithm/src/main/java/array/ProductExceptSelf.java

40 lines
1.2 KiB
Java
Raw Normal View History

2025-03-13 18:56:26 +08:00
package array;
/**
* 题目238. 除自身以外数组的乘积 (productExceptSelf)
* 描述给你一个整数数组 nums返回 数组 answer 其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积
* 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 整数范围内
* 不要使用除法且在 O(n) 时间复杂度内完成此题
* 链接https://leetcode.cn/problems/product-of-array-except-self/
*
示例 1:
输入: nums = [1,2,3,4]
输出: [24,12,8,6]
示例 2:
输入: nums = [-1,1,0,-3,3]
输出: [0,0,9,0,0]
*/
//没做出来
public class ProductExceptSelf {
public int[] productExceptSelf(int[] nums) {
int size=nums.length;
if(size==0)
return new int[]{};
int[] left=new int[size],right=new int[size];
left[0]=1;
right[size-1]=1;
for (int i = 1; i < size; i++) {
left[i]=left[i-1]*nums[i-1];
}
for (int j = size-2; j >=0 ; j--) {
right[j]=right[j+1]*nums[j+1];
}
int[]res=new int[size];
for (int k = 0; k < size; k++) {
res[k]=left[k]*right[k];
}
return res;
}
}