力扣238. 除自身以外数组的乘积

给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。题目数据保证数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位整数范围内。

请不要使用除法,且在 O(n) 时间复杂度内完成此题。

示例 1:

输入: nums =[1,2,3,4]

输出:[24,12,8,6]

示例 2:

输入: nums = [-1,1,0,-3,3]

输出: [0,0,9,0,0]

cpp 复制代码
class Solution {
public:
    vector<int> productExceptSelf(vector<int>& nums) {
        int n=nums.size();
        vector<int> ret(n,1);
        vector<int> prefix(n,1);//前缀积数组,初始化为1
        for(int i=1;i<n;i++){//prefix[0]默认为1
                    prefix[i]=prefix[i-1]*nums[i-1];
        }
        vector<int> postfix(n,1);//后缀积数组,初始化为1
        for(int i=n-2;i>=0;i--){//postfix[n-1]默认为1
            postfix[i]=postfix[i+1]*nums[i+1];
            
        }
        for(int i=0;i<n;i++){//前后缀积相乘为结果数组
            ret[i]=prefix[i]*postfix[i];
        }
        return ret;
    }
};
相关推荐
重生之后端学习2 分钟前
62. 不同路径
开发语言·数据结构·算法·leetcode·职场和发展·深度优先
小资同学4 分钟前
考研机试 -Kruskal算法
算法
y芋泥啵啵gfe6 分钟前
AI考研深造VS直接工作:选对赛道,认证为竞争力加码
人工智能·职场和发展
big_rabbit05027 分钟前
[算法][力扣283]Move Zeros
算法·leetcode·职场和发展
小资同学9 分钟前
考研机试动态规划 线性DP
算法·动态规划
listhi52014 分钟前
两台三相逆变器并联功率分配控制MATLAB实现
算法
Evand J17 分钟前
【IMM】非线性目标跟踪算法与MATLAB实现:基于粒子滤波的交互式多模型,结合CV和CT双模型对三维空间中的机动目标进行高精度跟踪
算法·matlab·目标跟踪·pf·粒子滤波·imm·多模型
重生之后端学习18 分钟前
64. 最小路径和
数据结构·算法·leetcode·排序算法·深度优先·图论
We་ct42 分钟前
LeetCode 212. 单词搜索 II:Trie+DFS 高效解法
开发语言·算法·leetcode·typescript·深度优先·图搜索算法·图搜索
样例过了就是过了44 分钟前
LeetCode热题100 路径总和 III
数据结构·c++·算法·leetcode·链表