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; } }