LCR 191. 按规则计算统计结果
为了深入了解这些生物群体的生态特征,你们进行了大量的实地观察和数据采集。数组 arrayA 记录了各个生物群体数量数据,其中 arrayA[i] 表示第 i 个生物群体的数量。请返回一个数组 arrayB,该数组为基于数组 arrayA 中的数据计算得出的结果,其中 arrayB[i] 表示将第 i 个生物群体的数量从总体中排除后的其他数量的乘积。
示例 1:
**输入:**arrayA = [2, 4, 6, 8, 10]
输出:[1920, 960, 640, 480, 384]
提示:
所有元素乘积之和不会溢出 32 位整数
arrayA.length <= 100000
因为生物群体数量可能为0,所以我们无法直接使用除法。
首先可以分类讨论:1. 没有零:全部数乘积除以当前数;2. 一个零:其他位置为零,零元素为非零相乘;3. 多个零:都为零;
暴力解法每次遍历只能求出一个数,我们可以考虑以当前元素为分界点。
每个结果都是左区间的数乘右区间的数,并且对于B[i]的左区间有B[i+1]=B[i]*A[i-1],右区间同理
所以可以两次遍历分别求左区间和右区间,每次遍历可直接求出所有位置的左/右区间
1 | class Solution { |
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.





