力扣238:除自身之外数组的乘积

力扣238:除自身之外数组的乘积

题目

给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。

题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。

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

思路

除自身之外的数组的乘积其实不就是左边全部的数相乘再乘上右边全部的数吗,这不是就是前缀和后缀的思想。所以我们直接构造两个数组当作前缀乘和后缀乘 。只是要注意 前缀乘的第一个位置和后缀乘的最后一个位置要设为1。这样才能继续下去。我们使用三次循环分别求得前缀乘,后缀乘和答案数组。

代码

cpp 复制代码
class Solution {
public:
    vector<int> productExceptSelf(vector<int>& nums) {
        int n = nums.size();
        vector<int> left(nums);
        vector<int> right(nums);
        left[0] = 1;
        right[n-1] = 1;
        vector<int> res(n,1);
        for(int i = 1;i < n;i++)
        {
            left[i] = left[i-1] * nums[i-1];
        }
        for(int i = n-2;i >=0;i--)
        {
            right[i] = right[i+1] *nums[i+1];
        }
        for(int i = 0;i < n;i++)
        {
            res[i] = left[i] * right[i];
        }
        return res;

        
    }
};
相关推荐
dangdang___go3 分钟前
动态内存管理||malloc和free.realloc和calloc
c语言·开发语言·算法·动态内存管理
稚辉君.MCA_P8_Java3 分钟前
Gemini永久会员 快速排序(Quick Sort) 基于分治思想的高效排序算法
java·linux·数据结构·spring·排序算法
数字化脑洞实验室16 分钟前
智能决策与决策优化:从算法到产业的演进逻辑
算法
cpp_250116 分钟前
P5412 [YNOI2019] 排队
数据结构·c++·算法·题解·洛谷
kingmax5421200830 分钟前
图论核心算法(C++):包括存储结构、核心思路、速记口诀以及学习方法, 一站式上机考试学习【附PKU百练,相关练习题单】
c++·算法·图论·信奥赛·上机考试·百练·pku
罗湖老棍子33 分钟前
【例9.15】潜水员(信息学奥赛一本通- P1271)
c++·算法·动态规划·二维费用背包
_OP_CHEN37 分钟前
算法基础篇:(二十一)数据结构之单调栈:从原理到实战,玩转高效解题
数据结构·算法·蓝桥杯·单调栈·算法竞赛·acm/icpc
代码游侠1 小时前
学习笔记——数据结构学习
linux·开发语言·数据结构·笔记·学习
q***51892 小时前
【语义分割】12个主流算法架构介绍、数据集推荐、总结、挑战和未来发展
算法·架构
蘑菇小白2 小时前
数据结构--链表
数据结构·链表