2022-4-8 高频面试题
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。
题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。
请不要使用除法,且在 O(n) 时间复杂度内完成此题。
1 class Solution { 2 public int[] productExceptSelf(int[] nums) { 3 int n=nums.length,sum=1; 4 int[] l=new int[n]; 5 int[] r=new int[n]; 6 for (int i=0;i<n;i++) { 7 l[i]=sum; 8 sum*=nums[i]; 9 } 10 sum=1; 11 for (int i=n-1;i>=0;i--) { 12 r[i]=sum; 13 sum*=nums[i]; 14 } 15 int[] ans=new int[n]; 16 for (int i=0;i<n;i++) { 17 ans[i]=l[i]*r[i]; 18 } 19 return ans; 20 } 21 }
思路:构造l 和 r数组表示当前元素左边乘积和右边乘积,则结果为左右乘积和。
浙公网安备 33010602011771号