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

news2024/9/27 21:20:19

除自身以外数组的乘积

medium

给你一个整数数组 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]

提示:

  • 2 <= nums.length <= 105
  • -30 <= nums[i] <= 30
  • 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内

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

解法:

image-20230710102108944

从上面的图可以看出,当前位置的结果就是它左部分的乘积再乘以它右部分的乘积。因此需要进行两次遍历,第一次遍历用于求左部分的乘积,第二次遍历在求右部分的乘积的同时,再将最后的计算结果一起求出来。

class Solution:
    def productExceptSelf(self, nums: List[int]) -> List[int]:
        answer, left, right = [1], 1, 1
        for i in range(len(nums) - 1):
            left *= nums[i]
            answer.append(left)
        
        for i in range(len(nums) - 1, 0 , -1):
            right *= nums[i]
            answer[i -1] *= right
        
        return answer

下面是对代码的逐行解释:

class Solution:
    def productExceptSelf(self, nums: List[int]) -> List[int]:
        answer, left, right = [1], 1, 1

这是一个名为Solution的类,它有一个名为productExceptSelf的方法。方法接受一个整数数组nums作为输入,并返回一个整数数组作为输出。answer是一个列表,初始化为[1]leftright分别初始化为1。

for i in range(len(nums) - 1):
    left *= nums[i]
    answer.append(left)

在这个循环中,我们从数组的第一个元素开始,遍历到倒数第二个元素。每次迭代中,我们将left乘以当前元素nums[i],并将结果追加到answer列表中。这样,answer列表中的每个元素表示当前元素左侧所有元素的乘积。

for i in range(len(nums) - 1, 0 , -1):
    right *= nums[i]
    answer[i - 1] *= right

在这个循环中,我们从数组的最后一个元素开始,倒序遍历到第二个元素。每次迭代中,我们将right乘以当前元素nums[i],然后将answer列表中索引为i - 1的元素乘以right。这样,answer列表中的每个元素表示当前元素右侧所有元素的乘积。

return answer

最后,我们返回计算得到的answer列表作为结果。

综上所述,这个函数通过两次遍历数组,分别计算每个元素左侧和右侧所有元素的乘积,并将结果保存在answer列表中,最后返回这个列表作为输出。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/738159.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

抖音seo矩阵系统源码搭建技术+二开开源代码定制部署

抖音SEO源码是指将抖音平台上的视频资源进行筛选、排序等操作&#xff0c;进而提升其在搜索排名中的权重&#xff0c;从而让更多的用户能够发现并观看到这些视频资源。而抖音SEO矩阵系统源码则是指通过建立一个分析系统&#xff0c;分析抖音中的用户、视频、标签等数据&#xf…

【数据分类】基于蜣螂优化算法优化支持向量机的数据分类方法 DBO-SVM分类算法【Matlab代码#47】

文章目录 【可更换其他群智能算法&#xff0c;获取资源请见文章第6节&#xff1a;资源获取】1. 蜣螂优化算法&#xff08;DBO&#xff09;2. 支持向量机&#xff08;SVM&#xff09;3. DBO-SVM分类模型4. 部分代码展示5. 仿真结果展示6. 资源获取 【可更换其他群智能算法&#…

Java Leetcode 动态规划 91. 解码方法

未优化版本代码展示&#xff1a; class Solution {public int numDecodings(String s) {char[]charss.toCharArray();int lengths.length();//创建dp数组int[]dpnew int[length];//初始化if(chars[0]!0){dp[0]1;}//特殊情况处理if(length1){return dp[0];}if(chars[1]!0){dp[1…

Postman高级应用——变量、流程控制、调试、公共函数、外部数据文件

目录 流程控制 调试 公共函数 外部数据文件 总结&#xff1a; Postman 提供了四种类型的变量 环境变量&#xff08;Environment Variable&#xff09; 不同的环境&#xff0c;使用不同的环境变量&#xff0c;例如&#xff1a;测试过程中经常会用到 测试环境&#xff0c;外…

PHP5.4以下解决json_encode中文UNICODE转码问题

PHP5.4以下解决json_encode中文UNICODE转码问题 把汉字先urlencode 然后再使用json_encode&#xff0c; json_encode之后 再次使用urldecode来解码&#xff0c; 这样编码出来的json数组中的 汉字就不会出现unicode编码了。 $params[importList][recipientAddress] urlencode(&…

Spring WebFlux使用函数式编程模型构建异步非阻塞服务

1 前言 上文引入了 Spring 框架中专门用于构建响应式 Web 服务的 WebFlux 框架&#xff0c;同时我也给出了两种创建 RESTful 风格 HTTP 端点实现方法中的一种&#xff0c;即注解编程模型。 本文介绍另一种实现方法——如何使用函数式编程模型创建响应式 RESTful 服务&#xf…

解决子元素设置margin-top使父元素也跟着向下移动的问题

先看代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevi…

rpc、gRPC快速入门,python调用,protobuf协议

什么是rpc?grpc又是什么&#xff1f; 什么是RPC 远程过程调用协议RPC (Remote Procedure Call Protocol) RPC是指远程过程调用&#xff0c;也就是说两台服务器A&#xff0c;B&#xff0c;一个应用部署在A服务器上&#xff0c;想要调用B服务器上应用提供的函数/方法&#xff…

何洁「桔梗」2023巡演广州站7月22日强势回归!

睽违5年&#xff0c;从心出发。7月22日&#xff0c;何洁携新专辑《桔梗》和你相约广州。这次巡回演唱会不仅会带来回忆满满的经典曲目&#xff0c;全新专辑里的作品也会惊喜开唱&#xff0c;期待值拉满。 19岁时年少成名&#xff0c;以不服输的态度诠释音乐至今&#xff0c;应该…

linux中安装nginx

2.安装nginx 2.1 安装nginx前&#xff0c;需要安装的依赖&#xff08;可能是由于nginx版本旧原因&#xff0c;可能最新或较新版本不需安装这些依赖&#xff09; 如下四个依赖需要安装到linux中 2.1.1 安装 pcre 依赖 &#xff08;使用wget命令&#xff09; 步骤一&#xff1…

自动应急灯电路/12V供电的电子节能灯电路设计

自动应急灯电路 本例介绍的自动应急灯&#xff0c;在白天或夜晚有灯光时不工作&#xff0c;当夜晚关灯后或停电时能自动点亮&#xff0c;延时一段时间后能自动熄灭。 一、电路工作原理 电路原理如图 25 所示。 该自动应急灯电路由光控灯电路、电子开关电路和延时照明电路组成…

关于时间序列的平稳性检测

时间序列的平稳性检验 对时间序列的研究和处理&#xff0c;其实也算是有点意思。很多时候就是耍流氓&#xff0c;我们假设它有规律&#xff0c;然后去研究它&#xff0c;等老天开眼的时候&#xff0c;总能找出点东西来自圆其说&#xff0c;嘿嘿。 ARIMA家族的时序模型&#xf…

Java基层云HIS系统源码融合B/S电子病历系统(SaaS模式)

一、云his系统概述 ta是一款满足二甲医院、基层医院机构业务需要的健康卫生云系统。该系统能帮助基层医院机构完成日常各类业务&#xff0c;提供病患挂号支持、病患问诊、电子病历、开药发药、会员管理、统计查询、医生站和护士站等一系列常规功能&#xff0c;还能与公卫、PAC…

LPDDR4X Ball Description(引脚描述)

SymbolType&#xff08;DDR视角&#xff09;Function中文翻译CK_A CK_An CK_B CK_BnInputClock: CK and CKn are differential clock inputs. All address, command, and control input signals are sampled on the crossing of the positive edge of CK and the negative edge…

Coggle 30 Days of ML(23年7月)任务六:训练FastText、Word2Vec词向量

Coggle 30 Days of ML&#xff08;23年7月&#xff09;任务六&#xff1a;训练FastText、Word2Vec词向量 任务六&#xff1a;学会训练FastText、Word2Vec词向量 说明&#xff1a;在这个任务中&#xff0c;你将学习如何训练FastText和Word2Vec词向量模型&#xff0c;这些词向量…

网络安全(黑客)自学方法

在各大平台搜的网安学习路线都太粗略了。。。。看不下去了&#xff01; 我把自己整理的系统学习路线&#xff0c;拿出来跟大家分享了&#xff01;点击查看详细路线图 建议的学习顺序&#xff1a; 一、网络安全学习普法&#xff08;心里有个数&#xff0c;要进去坐几年&#xf…

Transformer详细解释

transformer的细节到底是怎么样的&#xff1f;Transformer 连环18问&#xff01; 4.1 从功能角度&#xff0c;Transformer Encoder的核心作用是提取特征&#xff0c;也有使用Transformer Decoder来提取特征。例如&#xff0c;一个人学习跳舞&#xff0c;Encoder是看别人是如何…

IDEA中springboot的热加载thymeleaf静态html页面

1.首先加入开发工具依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional> </dependency> 2.其次在build maven插件中开启热部署 <bu…

第43节:cesium 大雾效果(自定义代码)(含源码+视频)

结果示例: 完整源码: <template><div class="viewer"><vc-viewer @ready="ready" :logo="false"><!

STM32 Proteus UCOSII系统多路数据采集系统8路开关量4路电压-0058

STM32 Proteus UCOSII系统多路数据采集系统8路开关量4路电压-0058 Proteus仿真小实验&#xff1a; STM32 Proteus UCOSII系统多路数据采集系统8路开关量4路电压-0058 功能&#xff1a; 硬件组成&#xff1a;STM32F103R6单片机 LCD1602显示器8路光耦隔离开关量采集4路微小信号…