除自身以外数组的乘积

2023-10-31

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

示例:

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

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

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

解题思路:

如果能用除法的话,问题会变得很简单,只需要将所有整数的乘积求出,然后除以当前数,即为除了当前数以外的所有数字的乘积(不考虑有0的情况)。在不能使用除法的情况下,可以通过减法来实现除法,但是当数组中元素个数很大的时候,减法的次数会变得非常之多,时间复杂度也会远远超过O(n)。在这种情况下,考虑用二进制移位和加减的方式来实现除法,时间复杂度为降为O(n)。

另外,还要考虑数组中有0的情况,如果0的个数不止一个的话,则得到的所有输出全为0;

如果0的个数只有一个的话,那么除了

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

除自身以外数组的乘积 的相关文章

  • Java继承(超详解)

    目录 1 继承 1 1 继承概述 1 2 继承的优缺点 1 3 继承中变量的访问特点 1 4 super 1 5 继承中构造方法的访问特点 1 6 继承中成员方法的访问特点 1 7 方法重写 1 8 方法重写的注意事项 1 9 java中继

随机推荐

  • 2021年南京大学842考研-软件工程部分简答题

    1 抽象和分解的关系 抽象和分解是软件设计的核心思想 分解是横向将系统分解为几个相对简单的子系统以及各子系统之间的关系 分解之后每次只需关注经过分解的相对简单的子系统及其相互间的关系 从而降低了复杂度 抽象则是在纵向上聚焦各自系统的接口 抽
  • MyBatis简介

    1 什么是 MyBatis MyBatis 是一款优秀的持久层框架 它支持自定义 SQL 存储过程以及高级映射 MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作 MyBatis 可以通过简单的 XML 或注解来
  • c++ std::string截取子串

    std vector
  • 上传文件请求绕过网关

    一 问题描述 1 本例中 我需要请求上传文件微服务的接口 并且绕过Zuul网关 因为请求会携带图片 如果再通过网关的话 会非常浪费资源 2 图片上传是文件的传输 如果也经过Zuul网关的代理 文件就会经过多次网路传输 造成不必要的网络负担
  • 【附源码】计算机毕业设计Python安卓Android的问卷调查管理系统9q4d4(源码+程序+LW+调试部署)

    附源码 计算机毕业设计Python安卓Android的问卷调查管理系统9q4d4 源码 程序 LW 调试部署 该项目含有源码 文档 程序 数据库 配套开发软件 软件安装教程 项目运行环境配置 Python3 7 7 Django Mysql
  • 【有限元分析】有限元仿真分析与解析解的结果对比——以阶梯轴的静力分析为例

    1 对一个阶梯轴零件进行基于材料力学的理论计算 求解最大应力值 2 在WORKBENCH中对该阶梯轴零件进行有限元仿真 实行两种仿真方案 分别是1 梁模型建模 梁单元网格划分 2 实体模型建模 六面体单元网格划分 观察两种仿真结果并与理论计
  • Flask导入配置文件

    为什么要导入配置文件呢 我刚开始学习Flask的时候 觉得没这必要 所以直接忽略了 后来 app的配置越来越多 并且不同的py文件里的配置有重复 所以需要另外写一个配置文件 方便管理 官方文档上说的有3种方法 app config from
  • android 拍照上传照片

    废话不多说 直接进入主题 想要在android中实现拍照最简单饿方法就是New 一个 Intent 设置Action为android media action IMAGE CAPTURE 然后使用startActivityForResult
  • 锁存器、触发器和寄存器

    锁存器 锁存器 latch 对脉冲电平敏感 在时钟脉冲的电平作用下改变状态 锁存器是电平触发的存储单元 数据存储的动作取决于输入时钟 或者使能 信号的电平值 当锁存器处于使能状态时 输出才会随着数据输入发生变化 简单地说 它有两个输入 分别
  • 使用jvisualvm进行远程监控

    使用jvisualvm进行远程监控
  • 判定表法设计测试用例

    判定表法设计测试用例 1 判定表 是分析和表达多逻辑条件下执行不同操作的工具 判定表是由条件桩 动作桩 条件项 动作项四部分组成的表格 1 条件桩 列出了所有条件 通常认为列出条件的次序无关紧要 2 动作桩 列出所有可能的操作 这些操作的排
  • SQL布尔盲注

    SQL布尔盲注 常用函数 注入步骤 1 爆数据库名称长度 2 爆库名 3 确定当前库中表的个数 4 爆表名长度 5 爆表名 6 爆表项个数 7 爆表项长度 8 爆表项 9 爆数据 常用函数 substr str from length 返回
  • Oracle 时间差计算

    Oracle 时间差计算 两个Date类型字段 START DATE END DATE 计算这两个日期的时间差 分别以天 小时 分钟 秒 毫秒 天 ROUND TO NUMBER END DATE START DATE 小时 ROUND T
  • 编译cpp_extension遇到的问题

    参考 https blog csdn net tanmx219 article details 100829920 https github com facebookresearch maskrcnn benchmark issues 25
  • jvm----运行时数据区域

    先导 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域 这些区域有各自的用途 以及创建和销毁的时间 有的区域随着虚拟机进程的启动而一直存在 有些区域则是依赖用户线程的启动和结束而建立和销毁 根据 Java
  • 论文笔记understanding black-box predictions via influence functions

    Purpose To formalize the impact of a training point on a prediction we ask the counterfactual what would happen if we di
  • 网络流和数据流

    1 流的本质为基本类型数组 2 网络流和数据流都是读某个文件路径 形成编码 再解析出来 short x arr i lt lt 8 arr i 1 char w char x char int short long都可以存视频流 音频流等
  • Qt使用教程

    1 项目背景 在完成最后一个项目的过程中 因为之前的定制版本是基于C 和WPF的 由于Qt的跨平台特性 而且相较于WPF简单易学 资料丰富 界面漂亮 尤其是能够独立安装和跨平台的特性 使得在项目开发初期就选择了C 与Qt的版本 由于之前并没
  • 重复元素判定 A

    描述 接收用户输入的一个列表 如果列表中元素存在重复 则返回True 否则返回False 测试用例 输入 1 2 3 4 3 2 1 输出 True 解析 counts num eval input for i in num counts
  • 除自身以外数组的乘积

    给定长度为 n 的整数数组 nums 其中 n gt 1 返回输出数组 output 其中 output i 等于 nums 中除 nums i 之外其余各元素的乘积 示例 输入 1 2 3 4 输出 24 12 8 6 说明 请不要使用除