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数组表示当前元素左边乘积和右边乘积,则结果为左右乘积和。

posted on 2022-04-08 12:25  阿ming  阅读(29)  评论(0)    收藏  举报

导航