除自身以外数组的乘积

《力扣刷题笔记》除自身以外数组的乘积&& 复制带随机指针的链表 力扣解题笔记: 除自身以外数组的乘积&& 复制带随机指针的链表 阅读详情

给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。

示例:

输入: [1,2,3,4]
输出: [24,12,8,6]

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

进阶:
你可以在常数空间复杂度内完成这个题目吗?( 出于对空间复杂度分析的目的,输出数组不被视为额外空间。)


分析:

    output[i] = nums[i]前面的数字乘积 * nums[i]后面的数字乘积

    以[1,2,3,4]为例,nums[i]前面的数组乘积为[1, 1*2, 1*2*3, 1*2*3*4]即为[1,2,6,24],nums[i]后面的数字的乘积为[1*2*3*4, 2*3*4, 3*4, 4]即为[24,24,12,4],那么output[1] = 1 * 12 = 12,依次类推

class Solution {
public:
    vector<int> productExceptSelf(vector<int>& nums) {
//         output保存结果,暂存逆序乘积
        vector<int> output;
        
        output.insert(output.begin(), nums[nums.size()-1]);
        for(int i=nums.size()-2; i>=0; i--){
            output.insert(output.begin(), nums[i]*output[0]);
        }
                      
//         保存正序的乘积
        for(int i=1; i<nums.size(); i++){
            nums[i]*= nums[i-1];
        }
//         计算结果
        for(int i=0; i<nums.size(); i++){
            output[i] = (i==0?1:nums[i-1]) * (i==nums.size()-1?1:output[i+1]);
        }
        return output;
    }
};

 

算法解密:除自身以外数组的乘积问题详解 通过对“除自身以外数组的乘积”问题的深入剖析和两种不同方法的代码实现,我们不仅掌握了如何在特定限制条件下解决数组乘积问题,还体会到了算法优化在提高代码效率和降低空间占用方面的重要性。从最初的暴力想法到逐步优化为高效的常数空间解法,这个过程展示了算法思维的不断演进。在今后的算法学习和实践中,我们可以将这种优化思路应用到更多问题上,不断提升自己解决复杂问题的能力,在算法的广阔天地中继续探索前行。 阅读详情

相关推荐

手把手教你用certificate-manager修复Vcenter证书过期问题(附密码重置技巧)

本文详细解析了Vcenter证书过期引发的503服务不可用、密码错误等典型故障现象,并提供了使用certificate-manager工具进行系统性修复的完整步骤。文章重点阐述了证书体系原理、精准诊断方法,并分享了在SSO验证失败时通过vdcadmintool重置密码的关键技巧,帮助管理员快速恢复平台并建立预防性运维策略。

swift5iosmith的博客 457

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

更优解法:将乘积分为两次进行,第一次先将每个位置左边的数据乘积计算出来放到返回数组中,后边第二次循环 将对应位置右边的数据乘积计算出来与返回数组对应位置的左半边乘积相乘得到结果。位右侧乘积 right*=nums[1] -> right =1*4*3。位左侧乘积 left*=nums[1] -> left = 1*2*3。一次循环完毕后,返回数组中每个元素存储的都是自己左侧元素的乘积。个元素的左边乘积, arr[1] = left 然后计算第。循环完毕后,返回数组中的每个元素都是其他元素的乘积了。

m0_73345579的博客 850

《YOLOv8实例分割实战:训练自己的数据集 》(视频课程)

本课程将手把手地教大家使用labelme标注和使用YOLOv8训练自己的数据集,完成一个多目标实例分割实战项目。

bai666ai的博客 789

【面试题】除自身以外数组的乘积(三种解法)

题目描述 解法一:构造前、后缀乘积数组 class Solution(object): def productExceptSelf(self, nums): """ :type nums: List[int] :rtype: List[int] """ left = [1]+ [0]*(len(nums)-1) # 第一个元素左边没有元素,则前缀乘积记为 1 right = [0]*(len(nums)

Mr_SCX的博客 707

实验六 存储器实验

只读存储器(ROM)是一种在正常工作时其存储的数据固定不变,其中的数据只能读出,不能写入,即使断电也能够保留数据,要想在只读存储器中存入或改变数据,必须具备特定的条件。当地址为00000101时,会分别在数据位宽为8,16,32的只读寄存器中找到地址为00000101所对应的十进制地址位置,也就是地址为5的数据,并将其分别以8位,16位,32位输出。因此,输出保持为0。因此,当异步清零信号为1时,无论其他输入信号是什么,触发器的输出都会被强制清零,输出为0。1)寄存器输入0011,使能端1,异步清零0。

wenmou1111的博客 3001

正点原子ATK-LORA-01无线串口代码移植+STM32F103C8T6(标准库)

目录 一、ATK-LORA-01无线串口资料 二、代码移植 1.分析 (1)usart3(也可以是其他的串口)用于接收数据的串口 usart.h (2)time3(也可以是其他的定时器)用于时序的设置 (3)lora.c 三、演示 1.主机(发送方) (1)主机接线 (2)主机代码(发送方) (3)主机实物 插上无线串口通电即可发送​ 2.从机(接收方) (1)从机接线(LORA与主机相同) (2)从机代码(接收方) (3)从机实物 接上TTL和LORA并通电即...

m0_56942354的博客 8966

leetcode238:除自身以外数组的乘积

使用不同的方法解决leetcode第238题

weixin_69380220的博客 2046

RK平台以太网设置中添加代理设置

以太网中配置Configuration的时候可以IpConfiguration的初始化函数来设置代理类型和代理参数。通过添加一个KEY_ETH_PROXY的选项来设置代理的配置,然后再设置以太网静态或者动态的类型时候下发给系统进行设置。

Android系统开发笔记 656

算法题(22):除自身以外数组的乘积

第一步是把它当成right数组来使用,然后再进行一次循环,利用一个cur变量维护前缀积,就可以在answer数组里面实现前缀积和后缀积相乘。但是由于题目不给我们使用除法,所以该方法不行。第二个循环完成了前缀积与后缀积相乘,前缀积由cur来维护,从第二个元素开始运算是因为第一个位置前面没有元素,前缀积为1,不用计算。我们可以创建两个数组,数组left负责存储i位置的前缀积,数组right则负责存储i位置的后缀积。前面的两个方法都是分开进行前缀积和后缀积的运算,而双指针可以同时进行前缀积和后缀积的运算。

2301_79954395的博客 580

【WorkBuddy专栏43】如何利用WorkBuddy开发一个PC网站(上)——环境选型、设计编码到部署上线

【WorkBuddy专栏43】如何利用WorkBuddy开发一个PC网站(上)——环境选型、设计编码到部署上线

AI人人懂 2246

2025年再论 SAP ABAP 系统经典的三层架构的理解

【摘要】本文基于作者19年SAP开发经验,深入解析SAP经典三层架构在S/4HANA时代的演进与实践。数据库层从多数据库支持转向HANA专属,通过SQLScript实现计算下推;应用层以ABAP平台为核心,融合OData和RAP等现代开发范式;表现层从SAP GUI过渡到Fiori Launchpad为主导。文章通过真实案例(如月末关账优化、ATP检查改造)展示三层协作如何提升性能,并探讨了本地/云/混合部署策略。全文贯穿SAP官方技术文档参考,为开发者提供体系化架构认知和实践指导。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 755

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

本题要求在不使用除法的情况下,计算数组中除自身以外其余各元素的乘积。可以通过分别计算每个元素的前缀乘积和后缀乘积,然后将它们相乘得到最终结果。之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。238.除自身以外数组的乘积。之外其余各元素的乘积。时间复杂度内完成此题。题目数据 保证 数组。请不要使用除法,且在。

qq_40844444的博客 1108

华为OD机试双机位C卷-魔法收积木 (C/C++/Py/Java/Js/Go)

华为OD机试(机考)双机位C卷 【魔法收积木】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为od - 魔法收积木。

qq_45776114的博客 1940

Leetcode:238. 除自身以外数组的乘积【题解超详细】

由于该题不能使用除法 所以参考题解写一个左右乘积列表的方法 创建两个新的数组a,b 一个用于记录从左到右的乘积(类似于动态规划的思想)a 另一个记录从右到左的乘积 b(注意b是从右到左进行累乘) 而a的最左端为1,b的最右端为1 如此在结尾的时候只需要a*b即可 举例, ans[0]=a[0]*b[0] a[0]=1 b[0]=除了nums[0]以外所有元素的乘积。这里我们以数组 [1,2,3,4] , 这里我们需要注意的是 数组的第一个元素的前缀乘积和数组的最后一个元素的后缀乘积是1。

加油!!! 3582

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【前缀和】除自身以外数组的乘积

因此需要进行两次遍历,第一次遍历用于求左部分的乘积,第二次遍历在求右部分的乘积的同时,再将最后的计算结果一起求出来。是类似的,只不过从之前的加法变成了乘法,具体的细节可以参考之前的笔记,同样还是用两个数组来分别记录前缀乘积和后缀乘积,最后由原数组来获取结果集!区间的元素乘积,所以可以很容易得到 front[i] = front[i - 1]*nums[i - 1]区间的元素乘积,很容易得到 back[i] = back[i + 1]*nums[i + 1]数组为前缀乘积数组,front[i]

lirendada的博客 844

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

【算法学习】除自身以外数组的乘积

除自身以外数组的乘积算法学习

qq_27269301的博客 729

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【力扣刷题实战】除自身以外数组的乘积

文章目录目录力扣题目:除自身以外数组的乘积题目描述解题思路问题理解算法选择具体思路解题要点完整代码(C++)兄弟们共勉 !!! 每篇前言原题链接:238. 除自身以外数组的乘积 - 力扣(LeetCode)给你一个整数数组 ,返回 数组 ,其中 等于 中除 之外其余各元素的乘积 。题目数据 保证 数组 之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。请 不要使用除法,且在 时间复杂度内完成此题。示例 1: 输入: nums = [1,2,3,4] 输出: [24,12,8,6

2401_85548793的博客 923

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

所以,可以只有一个数组,初始化全1,然后开始计算。分别从0,n-1开始计算,最后就是对应元素相乘。,然后计算结果,两次for循环。为了减少空间,可以直接使用。

weixin_49332521的博客 1086

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

力扣-238.除自身以外数组的乘积,解题思路分享。

weixin_67851619的博客 1101

LeetCode 经典题:“除自身以外数组的乘积”

给定一个长度为n的整数数组nums,其中n > 1,返回输出数组output,其中output[i]等于nums中除nums[i]之外其余各元素的乘积。:请不要使用除法,且在On时间复杂度内完成此题。

jukuya的博客 717

除自身以外数组的乘积(leetcode)

难度:中等。

qq_74215392的博客 1002

leetcode刷题记录(五十九)——238. 除自身以外数组的乘积

238. 除自身以外数组的乘积 - 力扣(LeetCode)238. 除自身以外数组的乘积 - 给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。请 不要使用除法,且在 O(n) 时间复杂度内完成此题。

weixin_45994787的博客 997

[238]、除自身以外数组的乘积

题目 题目链接 给你一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。 示例1: 输入: [1,2,3,4] 输出: [24,12,8,6] 提示:题目数据保证数组之中任意元素的全部前缀元素和后缀(甚至是整个数组)的乘积都在 32 位整数范围内。 说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题。 进阶: 你可以在常数空间复杂度内完成这个题目吗?( 出于对空间复杂度

qq_28749335的博客 162

leetcode热题——除自身以外数组的乘积

leetcode热题——除自身以外数组的乘积

2401_83194362的博客 701

每日一题——除自身以外数组的乘积

每日一题——除自身以外数组的乘积

zxjiaya的博客 580
上一篇: 旋转数组
下一篇: ORB特征点匹配
rdc01234
博客等级 码龄9年 10粉丝 156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值