【LeetCode热题100】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]

提示:

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

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

四.解题思路

详见代码

五.代码实现

//考虑到不用除法的情况, 可以认为每个位置的ans[i]应当为其左边所有数的乘积乘右边所有数的乘积
//因此我们可以先声明答案数组ans, 遍历一遍求出每个ans[i],表示第i个元素及其后i个元素的乘积
//而后更新nums, 新的nums[i]表示第i个元素及其前i个元素的乘积
//而后在更新一次ans, 此时ans[i] = ans[i + 1] * nums[i - 1] 即可表示该位置的结果(第一个和末尾数特判即可)
class Solution { 
public:vector<int> productExceptSelf(vector<int>& nums) {vector<int> ans(nums.size(), 0);int n = nums.size();*ans.rbegin() = *nums.rbegin();for (int i = n - 2; i >= 0; i--) {ans[i] = nums[i] * ans[i + 1];}for (int i = 1; i < n; i++) {nums[i] = nums[i - 1] * nums[i];}for (int i = 0; i < n; i++) {if (i == 0)ans[i] = ans[i + 1];else if (i == n - 1)ans[i] = nums[i - 1];else {ans[i] = nums[i - 1] * ans[i + 1];}}return ans;}
};

六.题目总结

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

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

相关文章

HCIP-Datacom H12-831 题库补充(4/12)

2024年 HCIP-Datacom&#xff08;H12-831&#xff09;最新题库&#xff0c;完整题库请扫描上方二维码&#xff0c;持续更新。 以下关于OSPF Sham Link的描述&#xff0c;错误的是哪一项&#xff1f; A&#xff1a;为了使VPN流量通过MPLS VPN骨干网转发&#xff0c;Sham Link的路…

docker 安装初体验

文章目录 前言简介一、准备工作1.1 安装docker1.2 查看版本1.3 启停docker 二、docker命令介绍2.1 查看doeker容器2.2 查看doeker镜像2.3 docker基本命令 三、下载镜像、创建容器3.1 下载centos镜像3.2 测试运行镜像3.3 将宿主机的文件拷贝到容器上3.4 将容器内的文件拷贝到宿主…

Photoshop小记

ps使用小记 我用的是22版ps。 1. 软件下载和基本使用 新建自定义项目。 放大缩小&#xff1a;alt滚轮。 抓手工具&#xff1a;空格鼠标拖动。 2. 图层&#xff0c;蒙版&#xff0c;自由变换 右下小框可以将背景拖到垃圾桶标志来删除&#xff0c;可以点击加号新建图层。 c…

RA4000CE为汽车动力传动系统提供解决方案

目前汽车电气化的水平越来越高&#xff0c;其中比较显著的一个发展方向就是将发动机管理系统和自动变速器控制系统&#xff0c;集成为动力传动系统的综合控制(PCM)。作为汽车动力的核心部件&#xff0c;通过电子系统的运用&#xff0c;将外部多个传感器和执行环节的数据进行统一…

深度学习pytorch实战第P3周--实现天气识别

>- **&#x1f368; 本文为[&#x1f517;365天深度学习训练营](https://mp.weixin.qq.com/s/0dvHCaOoFnW8SCp3JpzKxg) 中的学习记录博客** >- **&#x1f356; 原作者&#xff1a;[K同学啊](https://mtyjkh.blog.csdn.net/)** 引言 1.复习上周 深度学习pytorch实战-第…

vue3组件TS类型声明实例代码

为 props 标注类型 当使用 <script setup lang"ts">const props defineProps({foo: { type: String, required: true },bar: Number})props.foo // stringprops.bar // number | undefined</script> 这被称为 运行时声明 &#xff0c;因为传递给 defi…

一文了解HTTPS的加密原理

HTTPS是一种安全的网络通信协议&#xff0c;用于在互联网上提供端到端的加密通信&#xff0c;确保数据在客户端&#xff08;如Web浏览器&#xff09;与服务器之间传输时的机密性、完整性和身份验证。HTTPS的加密原理主要基于SSL/TLS协议&#xff0c;以下详细阐述其工作过程&…

欧盟EDPS发布2023年度报告,强调数据安全的重要性

文章目录 前言一、EDPS在政策制定中发挥的作用1、人工智能方面。2、数字货币(欧元)方面。3、《通用数据保护条例》(GDPR)方面。4、打击跨国犯罪。5、飞机旅客的个人数据保护。二、EDPS科技与隐私小组(T&P)的下属部门1、技术监测与预测部门。2、数字化转型部门。3、系…

常见程序故障排查及程序配置

文章目录 故障排查基础关机/重启/注销系统信息和性能查看磁盘和分区⽤户和⽤户组⽹络和进程管理常⻅系统服务命令⽂件和⽬录操作⽂件查看和处理打包和解压RPM包管理命令YUM包管理命令DPKG包管理命令APT软件⼯具 分析工具JDK自带分析工具jpsjstatjinfojmapjhatjstackjcmd GUI分析…

播放Samba协议下的音视频文件

Samba&#xff08;也被称为SMB/CIFS&#xff09;是一个用于在局域网内共享文件和打印服务的协议&#xff0c;广泛应用于Windows和Linux系统之间的文件共享。 一、展示Samba服务器下的文件 使用如jcifs这样的Java库来在安卓应用中集成SMB/CIFS客户端功能。这个库提供了与SMB/CI…

QT:QMainWindow、ui界面、资源文件的添加、信号和槽

1.练习&#xff1a;使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(…

设计模式-开闭原则和迪米特法则

开闭原则 基本介绍 开闭原则(Open Closed Principle) 是编程中最基础、最重要的设计原则一个软件实体如类&#xff0c;模块和函数应该对扩展开放(对提供方)&#xff0c;对修改关闭(对使用方)。用抽象构建框架&#xff0c;用实现扩展细节。当软件需要变化时&#xff0c;尽量通…

第6章 6.3.1 正则表达式的语法(MATLAB入门课程)

讲解视频&#xff1a;可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇&#xff08;数学建模清风主讲&#xff0c;适合零基础同学观看&#xff09;_哔哩哔哩_bilibili 正则表达式可以由一般的字符、转义字符、元字符、限定符等元素组…

算法题解记录8+++爬楼梯(百日筑基)

题目描述&#xff1a; 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 示例 1&#xff1a; 输入&#xff1a;n 2 输出&#xff1a;2 解释&#xff1a;有两种方法可以爬到楼顶。 1. 1 阶…

KVM虚拟机

文章目录 QEMU-KVM介绍虚拟网卡流程网卡透访流程 QEMU-KVM介绍 QEMU ● QEMU是一个主机上的VMM (Virtual machine monitor), 通过动态二进制模拟CPU&#xff0c;并提供一系列的硬件模型&#xff0c;使Guest OS能够与Host硬件交互。 ● QEMU的代码中有完整的虚拟机实现&#xf…

【C++】1.从C语言转向C++

目录 一.对C的认识 二.C的关键字 三.命名空间 3.1命名空间的定义 3.2命名空间的使用 四.C的输入与输出 五.缺省参数 5.1全缺省参数 5.2半缺省参数 六.函数重载 七.引用 7.1引用的特性 7.2引用和指针的区别 八.内联函数 九.auto关键字&#xff08;C1…

WEB漏洞——XXE

文章目录 前言一、XXE简述及XML基础XXE简述XML基础xml简介文档格式xml树结构xml其它xml语法1、格式良好的xml2、编写第一段XML代码DTD介绍内部文档声明(即DTD在XML源文件中)外部文档声明(DTD位于XML源文件的外部)XML文档构建模块Elements(元素)数量词的用法Attributes(属…

常州南京旅游安排

第一天&#xff1a;中华恐龙园初体验与市区美食 上午&#xff08;10:30 - 12:00&#xff09; 早晨提前出发&#xff0c;争取早点进入&#xff0c;以减少热门项目的排队时间。10:00 到达园区后&#xff0c;首先前往“4D过山车”等热门项目&#xff0c;这些项目通常人气较高&am…

CISA :恶意软件分析平台Malware Next-Gen全新升级

本周三&#xff0c;美国网络安全和基础设施安全局&#xff08;CISA&#xff09;发布了新版恶意软件分析平台Malware Next-Gen&#xff0c;现在公众可以提交任意恶意软件样本供 CISA 分析。 据悉&#xff0c;Malware Next-Gen 可用于检查恶意软件样本中是否存在可疑项目。它最初…

数据生成 | Matlab实现基于SNN浅层神经网络的数据生成

数据生成 | Matlab实现基于SNN浅层神经网络的数据生成 目录 数据生成 | Matlab实现基于SNN浅层神经网络的数据生成生成效果基本描述模型描述程序设计参考资料 生成效果 基本描述 1.Matlab实现基于SNN浅层神经网络的数据生成&#xff0c;运行环境Matlab2021b及以上&#xff1b; …