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

news2024/9/20 0:41:00

题目描述

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

思路

参考:https://leetcode.cn/problems/product-of-array-except-self/solutions/11472/product-of-array-except-self-shang-san-jiao-xia-sa/

根据表格的主对角线(全为 1 ),可将表格分为 上三角 和 下三角 两部分。分别迭代计算下三角和上三角两部分的乘积

1)初始化:数组 ans ,其中 ans[0]=1 ;辅助变量 tmp=1 。
2)计算 ans[i] 的 下三角 各元素的乘积,直接乘入 ans[i] 。
3)计算 ans[i] 的 上三角 各元素的乘积,记为 tmp ,并乘入 ans[i] 。
4)返回 ans 。

class Solution:
    def productExceptSelf(self, nums):
        ans, tmp = [1] * len(nums), 1
        for i in range(1, len(nums)):
            ans[i] = ans[i - 1] * nums[i - 1] # 下三角
        for i in range(len(nums) - 2, -1, -1):
            tmp *= nums[i + 1]                # 上三角
            ans[i] *= tmp                     # 下三角 * 上三角
        return ans

if __name__ == '__main__':
    s=Solution()
    nums = [1, 2, 3, 4]
    print(s.productExceptSelf(nums))

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

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

相关文章

【Nuxt】自定义插件和生命周期

自定义插件 方式一: app.vue // 创建插件(在app.vue中创建全局可以使用 而在某个页面中创建只有该页面可以使用) // 方式一: const nuxtApp useNuxtApp(); nuxtApp.provide("formDate", () > {return "2023-12-12"; }) nuxtAp…

vue相关

1,Object.defineProperty和Proxy区别 定义、优缺点、区别 Object.defineProperty:vue2中实现数据监听/响应式的核心API。 Object.defineProperty遍历监听(observer)vue对象中的所有属性:data,props,comp…

基于深度学习的太阳暗条检测(2020年以来)

A universal method for solar filament detection from Hα observations using semi-supervised deep learning A&A, 686, A213 (2024) A universal method for solar filament detection from Hα observations using semi-supervised deep learning (aanda.org) ABS…

SpringBoot依赖之Quartz Scheduler定时调度器

Quartz Scheduler 依赖名称: Quartz Scheduler功能描述: Schedule jobs using Quartz.使用 Quartz 安排作业。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-quartz</artifactId></dependency&…

论文笔记: 视频关键帧抽取相关工作

2024-08-06&#xff0c;星期二&#xff0c;北京&#xff0c;晴 今天来看视频关键帧抽取主题。随着最近Sora文生视频的火热&#xff0c;视频相关的数据获得逐渐变得重要起来。这也就涉及到提取视频关键帧的问题。 从文本生成视频&#xff0c;我们拆分来看&#xff0c;一般流程…

泳泳馆押金原路退回系统,一键操作秒到账 押金+手牌+电子押金单

一、游泳馆手牌收押金必要性 游泳馆手牌收押金有以下必要性&#xff1a; 1. 防止手牌丢失&#xff1a;手牌是顾客在游泳馆内存储个人物品和进出更衣室的重要凭证。收押金可以让顾客更加重视手牌&#xff0c;降低丢失的概率。比如说&#xff0c;有的顾客可能会因为粗心大意随手…

用Python进行数据可视化——seaborn库详解

内容&#xff1a; 安装和导入Seaborn使用Seaborn创建基本图形了解Seaborn的默认数据集 代码&#xff1a; # 安装和导入Seaborn !pip install seaborn import seaborn as sns import matplotlib.pyplot as plt# 使用Seaborn创建基本图形 tips sns.load_dataset("tips&q…

python库(19):flashtext库实现高效文本查找与替换

1 FlashText简介 FlashText 是一个用于高效查找和替换关键词的 Python 库。它的优势在于能够在 O(n) 时间复杂度内完成任务&#xff0c;而不是像正则表达式那样需要 O(m*n) 的时间复杂度。FlashText 使用 Aho-Corasick 自动机算法&#xff0c;在大量关键词匹配时表现尤为出色。…

【Python机器学习】非均衡分类问题

在大多数情况下不同类比的分类代价并不相等。 分类性能度量指标&#xff1a;正确率、召回率及ROC曲线 通常情况下&#xff0c;我们可以基于错误率来衡量分类器任务的成功程度。错误率指的是在所有测试样例中错分的样例比例。实际上&#xff0c;这样的度量错误掩盖了样例如何被…

image.convert()函数转换格式及显示图像的RGB三通道图像

引 言 视觉任务处理的图片按照图像通道深度分为单通道图像和多通道图像。单通道图像有grayscale灰度图、binary二值图、PNG图&#xff0c;多通道图像有三通道24位真彩色RGB图&#xff0c;8位伪彩色图像&#xff0c;YCbCr图像等。本文先介绍各种格式图像的特点&#xff0c;随后讲…

c++初阶-----STL---list

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…

playwrite今日头条自动发帖

目的 大家好&#xff0c;我是watchpoints &#xff0c;一个只为自己打工程序员&#xff0c; watchpoints是我github用户名 &#xff0c;也是我的wechat 用户名&#xff0c; 每天看新闻浪费大量时间&#xff0c;写一个程序 自动提醒你21点远离手机 python实现 步骤1:自动登录 # …

在 Linux 9 上安装 Oracle 19c:克服兼容性问题 (INS-08101)

Oracle 数据库 19c 的基础版本 (19.3) 发布的时候还没有 Linux 9 &#xff0c;因此在Linux 9上面安装Oracle 19c会遇到很多兼容性问题。本文将探讨如何解决这些问题。 安装步骤 设置环境变量以绕过操作系统检查&#xff1a; Oracle 19.3 安装程序无法识别 Linux 9。 [WARNIN…

sql二次注入实战--2018年网顶杯

网址&#xff1a;BUUCTF在线评测 (buuoj.cn) 当我们进入后显示这个页面&#xff1a; 当我们第一次点击发帖的时候就会跳转到登陆页面&#xff0c;上面有提示&#xff0c;告诉我们账号为zhangwei,密码为zhangwei***&#xff1a; 这里我们可以使用bp抓包工具来进行暴力破解密码&…

《剑来》语句摘录(十二)

◆ 第二百零三章 休要略过不提 >> 怨怼与仇恨是快刀斩乱麻&#xff0c;一往无前。金铁相错&#xff0c;激起的火星&#xff0c;就是大丈夫的恩怨分明。无非敢作敢当。 愧疚和遗憾却是一把钝刀&#xff0c;刀刃上边的缺口&#xff0c;皆是曾经犯过的错误。关门磨刀即是后悔…

LVS四层架构部署

LVS四层架构部署 LVS集群的类型 lvs-nat&#xff1a; 修改请求报文的目标IP,多目标IP的DNATlvs-dr&#xff1a; 操纵封装新的MAC地址lvs-tun&#xff1a; 在原请求IP报文之外新加一个IP首部lvs-fullnat&#xff1a; 修改请求报文的源和目标IP LVS-NAT 工作流程 可以理解na…

主从备份(复制)

一、备份的三种类型 备份的三种主要类型包括热备份、逻辑备份和物理备份&#xff0c;每种备份类型都有其特定的应用场景和优缺点。 1. 热备份 定义&#xff1a; 热备份是在数据库或系统处于正常运行状态下进行的备份。这种备份方式允许在不停机的情况下对数据库或系统数据进…

用Python构建一个简单的神经网络

准备工作 首先我们需要使用到vscode 在终端 窗口下输入安装&#xff1a;pip3 install tensorflow pandas numpy keras 代码编写 导入库 import tensorflow as tf from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense import panda…

PyTorch深度学习实战(3)—— 小试牛刀:CIFAR-10分类

下面尝试从零搭建一个PyTorch模型来完成CIFAR-10数据集上的图像分类任务&#xff0c;步骤如下。 &#xff08;1&#xff09;使用torchvision加载并预处理CIFAR-10数据集。 &#xff08;2&#xff09;定义网络。 &#xff08;3&#xff09;定义损失函数和优化器。 &#xff08;4…

面向服务架构(SOA)介绍

在汽车电子电气架构还处于分布式时代时&#xff0c;汽车软件的开发方式主要是采用嵌入式软件进行开发&#xff0c;而随着汽车智能化程度的加深&#xff0c;更加复杂且多样的功能需求让汽车软件在复杂度上再上一层。在整车的自动驾驶方面&#xff0c;由于未来高阶自动驾驶能力的…