剑指 Offer 66. 构建乘积数组

给定一个数组 A[0,1,...,n-1],请构建一个数组 B[0,1,...,n-1],其中 B[i] 的值是数组 A 中除了下标 i 以外的元素的积, 即 B[i]=A[0]×A[1]×...×A[i-1]×A[i+1]×...×A[n-1]。不能使用除法。

示例:

复制代码
输入: [1,2,3,4,5]
输出: [120,60,40,30,24]

提示:

  • 所有元素乘积之和不会溢出 32 位整数
  • a.length <= 100000

解答

cpp 复制代码
class Solution {
public:
    vector<int> constructArr(vector<int>& a) {
        int len = a.size();
        if(!len) return a;
        vector<int> res(len, 1);
        int tmp = 1;

        // 本次循环后,res[i]为下标为i左边的数的乘积
        for(int i = 1; i < len; ++i)
        {
            res[i] = res[i - 1] * a[i - 1];
        }

        for(int i = len - 2; i >= 0; --i)
        {
            tmp *= a[i + 1]; // 计算出下标i右边的数的乘积
            res[i] *= tmp;
        }
        return res;
    }
};
相关推荐
小曹要微笑1 小时前
STM32各系列时钟树详解
c语言·stm32·单片机·嵌入式硬件·算法
前进的李工2 小时前
LeetCode hot100:094 二叉树的中序遍历:从递归到迭代的完整指南
python·算法·leetcode·链表·二叉树
麦麦大数据3 小时前
F049 知识图谱双算法推荐在线学习系统vue+flask+neo4j之BS架构开题论文全源码
学习·算法·知识图谱·推荐算法·开题报告·学习系统·计算机毕业设计展示
兩尛3 小时前
215. 数组中的第K个最大元素
数据结构·算法·排序算法
952363 小时前
数据结构-堆
java·数据结构·学习·算法
吃着火锅x唱着歌3 小时前
LeetCode 面试题 16.24.数对和
算法·leetcode·职场和发展
不会编程的小寒3 小时前
数据结构 2.0
数据结构·算法
专注VB编程开发20年3 小时前
图片转矢量图(提取轮廓线条)Potrace:一个基于多边形的位图轮廓矢量化算法(translation)
算法·图片转矢量
小羊失眠啦.4 小时前
Rust核心库(core)深度解析:无依赖基石的设计与实践
数据库·算法·rust
Wenhao.4 小时前
LeetCode Hot100 每日温度
数据结构·算法·leetcode·golang