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

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

  • 1、题目
  • 2、题目分析
  • 3、解题步骤
  • 4、复杂度最优解代码示例
  • 5、抽象与扩展

1、题目

给你一个整数数组 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) 的额外空间复杂度内完成这个题目吗?( 出于对空间复杂度分析的目的,输出数组 不被视为 额外空间。)

Related Topics
  • 数组
  • 前缀和

2、题目分析

1、求某数据之外,其余所有数据的相互处理,则可提前按处理规则,处理出前缀数组、后缀数组。
2、然后在求某数据外所有数据的相互处理时,可O(1)时间复杂度,用其前缀数组+后缀数组处理出结果。

3、解题步骤

1、处理出前缀数组、后缀数组。
2、这样在求某数据外所有数据的相互处理时,可O(1)时间复杂度,用其前缀数组+后缀数组处理出结果。

4、复杂度最优解代码示例

    public int[] productExceptSelf(int[] nums) {int[] res = new int[nums.length];// k为该数左边的乘积。int k = 1;for (int i = 0; i < res.length; i++) {res[i] = k;// 此时数组存储的是除去当前元素左边的元素乘积k *= nums[i];}// k为该数右边的乘积。k = 1;for (int i = res.length - 1; i >= 0; i--) {res[i] *= k;// 此时数组等于左边的 * 该数右边的。k *= nums[i];}return res;}

5、抽象与扩展

求某数据之外,其余所有数据的相互处理,则可提前按处理规则,处理出前缀数组、后缀数组。

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

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

相关文章

聊聊分布式会话及实现方案

鲁大猿&#xff0c;寻找精品资料&#xff0c;帮你构建Java全栈知识体系 http://www.jiagoujishu.cn 基础概念 Session Cookie 会话方案比较简单&#xff0c;这里我在网上找了点资料&#xff0c;再回顾下基础吧。 为什么要产生Session http协议本身是无状态的&#xff0c;客户…

数据结构——二叉树四种遍历的实现

目录 一、树的概念 1、树的定义 1&#xff09;树 2&#xff09;空树 3&#xff09;子树 2、结点的定义 1&#xff09;根结点 2&#xff09;叶子结点 3&#xff09;内部结点 3、结点间关系 1&#xff09;孩子结点 2&#xff09;父结点 3&#xff09;兄弟结点 4、树…

Mybatis-plus分页插件PageHelper的两种不同使用方式

最近在写需求的过程中接触到许多的分页&#xff0c;但是对于不同情况下会有不同的分页方法选择&#xff0c;由于目前使用得比较多的是mybatis-plus里面的分页插件&#xff0c;因此通过本文详细了解一下pageHelper的使用。 分页最终都是在sql中通过limit完成,limit offset,pageS…

图像分割 分水岭法 watershed

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 本文的C#版本请访问&#xff1a;图像分割 分水岭法 watershed&#xff08;C#&#xff09;-CSDN博客 Watershed算法是一种图像处理算…

Linux mcd命令教程:如何在MS-DOS文件系统中切换工作目录(附实例教程和注意事项)

Linux mcd命令介绍 mcd是mtools工具的指令&#xff0c;它用于在MS-DOS文件系统中切换工作目录。如果不加任何参数&#xff0c;它将显示当前所在的磁盘和工作目录。 Linux mcd命令适用的Linux版本 mcd命令在所有主流的Linux发行版中都可以使用&#xff0c;包括但不限于Ubuntu…

Flink 的时间属性及原理解析

Flink的API大体上可以划分为三个层次&#xff1a;处于最底层的ProcessFunction、中间一层的DataStream API和最上层的SQL/Table API&#xff0c;这三层中的每一层都非常依赖于时间属性。时间在Flink中的地位如下图所示&#xff1a; 时间属性是流处理中最重要的一个方面&#…

python flask图书管理系统带文档

python flask图书管理系统带文档。功能&#xff1a;登录&#xff0c;图书的增删改查&#xff0c;读者管理&#xff0c;借阅记录&#xff0c;有文档。 技术&#xff1a;python3,flask,mysql,html。 包含源码数据库文件文档。 源码下载地址&#xff1a; https://download.csd…

芯课堂 | MCU之TIMER精准延时

引言 华芯微特公司SWM系列单片机提供的TIMER个数和功能有些微差别&#xff0c;为了让您更加简单的使用这一功能&#xff0c;下面小编将以SWM190为例&#xff0c;给大家展示如何使用SWM系列产品的TIMER功能。 TIMER精准延时 一、TIMER简介 TIMER是一种定时器工具&#xff0c;…

【测试小工具开发】

【测试小工具开发】 一、pyinstaller打包 1、打包单个文件 生成.exe文件&#xff1a; windows powershell中执行 pyinstaller -F -w clean_log.py -F&#xff1a; 只生成一个.exe文件 -w&#xff1a;执行时不弹窗 clean_log.py为待转为.exe的python文件 2、打包多个文件 通…

实例:NodeJS 操作 Kafka

本人是C#出身的程序员&#xff0c;c#很简单就能实现&#xff0c;有需要的可以加我私聊。但是就目前流行的开发语言&#xff0c;尤其是面向web方向应用的&#xff0c;我感觉就是Nodejs最简单了。下面介绍&#xff1a; 本文将会介绍在windows环境下启动Kafka&#xff0c;并通过n…

滑动窗口最大值(力扣239题)

单调递减队列&#xff1a; 在解决题目之前&#xff0c;我们先来了解一下单调递减队列&#xff0c;它其实就是在队列的基础上多加了一些限制&#xff0c;如下图&#xff1a; 要求队列中的元素必须按从大到小的顺序排列。 如果向单调递减队列中加入数字 1&#xff0c;可以直接加入…

一起玩儿物联网人工智能小车(ESP32)——25. 利用超声波传感器测量距离

摘要&#xff1a;本文介绍如何利用超声波传感器测量障碍物的距离 测量距离是智能小车经常要用到的功能&#xff0c;今天就来介绍一个最常用的测量距离的传感器——超声波传感器。 超声波传感器的测距原理是利用超声波发射器向某个方向发射超声波&#xff0c;与此同时&#xff…

【Emgu.CV教程】第22篇 、色彩处理之ApplyColorMap()伪色彩应用

这篇文章讲的内容比较轻松&#xff0c;技术含量比较低。从我个人的角度讲&#xff0c;ApplyColorMap()函数实现了类似PhotoShop的一些酷炫效果&#xff0c;既把原始彩色图转换为21种风格各异的彩色图像&#xff0c;比如秋天风格、热力图风格等等&#xff0c;但是&#xff0c;在…

【Java期末】学生成绩管理系统

诚接计算机专业编程任务(C语言、C、Python、Java、HTML、JavaScript、Vue等)10/15R&#xff0c;如有需要请私信我&#xff0c;或者加我的企鹅号&#xff1a;1404293476 本文资源下载地址&#xff1a;https://download.csdn.net/download/weixin_47040861/88697244 —————…

Win11/10家庭版升专业版/企业版

2024.1.4 下载地址&#xff1a;HEU_KMS_Activator GitHubhttps://github.com/zbezj/HEU_KMS_Activator/tags 下载最新版即可 &#xff08;升级时需要断网&#xff09;打开程序 --> 其他 --> 选择professional --> 在点击四叶草图标即可 升级完后再次打开软件 -->…

Kali Linux实现UEFI和传统BIOS(Legacy)引导启动

默认Kali linux安装会根据当前启动的引导模式进行安装 例&#xff1a;以UEFI引导启动安装程序&#xff0c;安装后仅能在UEFI引导模式下进入系统 安装Kali系统 这边基于VirtualBox虚拟机镜像实战操作 首先创建一个Kali虚拟机 这里需要注意&#xff0c;把启动 EFI (只针对某些操…

Vue v-html中内容图片过大自适应处理

之前图片如下&#xff0c;图片已经超出了页面的展示范围 对v-html增加样式处理 <div class"body padding-l scroll " v-html"docData.content"> </div><style scoped>.body >>> img {max-width: 100% ;} </style>…

CCNP课程实验-04-BGP_CFG

目录 实验条件网络拓朴 基础配置需求实现IGP部分1. 按照图示配置OSPF区域&#xff0c;RID为Loopback 0地址。其中Area 146要配置为OSPF的特殊区域。2. 配置其它路由协议&#xff0c;重分布使得路由互相注入&#xff0c;实现全网互通。3. R1配置策略路由&#xff0c;使得R2经R1去…

Vue 框架前导:详解 Ajax

Ajax Ajax 是异步的 JavaScript 和 XML。简单来说就是使用 XMLHttpRequest 对象和服务器通信。可以使用 JSON、XML、HTML 和 text 文本格式来发送和接收数据。具有异步的特性&#xff0c;可在不刷新页面的情况下实现和服务器的通信&#xff0c;交换数据或者更新页面 01. 体验 A…

算法分析与设计 第六次理论作业

算法分析与设计 第六次理论作业 文章目录 算法分析与设计 第六次理论作业一. 单选题&#xff08;共4题&#xff0c;50分&#xff09;二. 填空题&#xff08;共3题&#xff0c;37.5分&#xff09;三. 简答题&#xff08;共1题&#xff0c;12.5分&#xff09; 一. 单选题&#xf…