classSolution:defproductExceptSelf(self, nums: List[int])-> List[int]:
n =len(nums)
preArr =[1]* n
postArr =[1]* n
for i inrange(1, n):# 计算二维矩阵的下三角部分从第2行(i=1)开始
preArr[i]= nums[i-1]* preArr[i-1]for i inrange(n-2,-1,-1):# 计算二维矩阵的上三角部分从第n-1行(i=n-2)开始
postArr[i]= nums[i+1]* postArr[i+1]
res =[]for i inrange(n):
res.append(preArr[i]* postArr[i])return res
classSolution:defproductExceptSelf(self, nums: List[int])-> List[int]:
n =len(nums)
a_array =[1]* n
tmp =1for i inrange(1, n):
a_array[i]= a_array[i-1]* nums[i-1]for i inrange(n-1,-1,-1):
a_array[i]*= tmp
tmp *= nums[i]return a_array
Java
classSolution{publicint[]productExceptSelf(int[] nums){int[] down =newint[nums.length];int[] up =newint[nums.length];int[] res =newint[nums.length];
down[0]=1;
up[nums.length -1]=1;for(int i =1; i < nums.length;++i){
down[i]= nums[i -1]* down[i -1];}for(int i = nums.length -2; i >=0;--i){
up[i]= nums[i +1]* up[i +1];}for(int i =0; i < nums.length;++i){
res[i]= down[i]* up[i];}return res;}}