[LeetBook]【学习日记】数组内乘积

题目

按规则计算统计结果

为了深入了解这些生物群体的生态特征,你们进行了大量的实地观察和数据采集。数组 arrayA 记录了各个生物群体数量数据,其中
arrayA[i] 表示第 i 个生物群体的数量。请返回一个数组 arrayB,该数组为基于数组 arrayA 中的数据计算得出的结果,其中
arrayB[i] 表示将第 i 个生物群体的数量从总体中排除后的其他数量的乘积。
示例 1:

输入:arrayA = [2, 4, 6, 8, 10] 输出:[1920, 960, 640, 480, 384]

提示:

所有元素乘积之和不会溢出 32 位整数 arrayA.length <= 100000

思路

  • 如果遍历解决本题,时间复杂度太高,一般来说都会超时
  • 需要利用已经计算过的结果进行进一步的计算,下面的两种解法都是基于这种思想
  • 由于数组内可能有0,且只有一个0和大于一个0这两种情况的结果还不一样,需特别注意

解法1:利用除法,计算所有非 0 元素乘积后分情况讨论

  1. 先计算所有非 0 元素的乘积
  2. 如果有大于一个 0,则数组B 全为 0
  3. 小于等于一个0,则根据要填入的位置上对应数组A 的元素是否为 0 分类讨论
vector<int> statisticalResult(vector<int>& arrayA) {int product = 1;bool have1Zero = false, have2Zero = false;for(auto &ele: arrayA){if(ele) product *= ele;//计算出所有非0元素的乘积else{if(have1Zero == true) have2Zero = true;//多于一个0have1Zero = true; //必有一个0} }vector<int> B;if(!have2Zero){// <=一个0,分情况填入for(auto &ele: arrayA){if(!ele) B.push_back(product);else if(have1Zero) B.push_back(0);else B.push_back(product/ele);} }else{//多于一个0,则输出全为0for(auto &ele: arrayA){B.push_back(0);} }return B;}

解法2:只利用乘法

在这里插入图片描述

https://leetcode.cn/leetbook/read/illustration-of-algorithm/lhiayd/

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

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

相关文章

常用Linux 命令汇总

1、基本命令 uname -m 显示机器的处理器架构 uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 (SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 hdparm -tT /dev/sda 在磁盘上执行测试性读取操作系统信息 arch 显示机器的处理器架构 uname -m 显示…

vue3项目tsconfig.js详解

Tsconfig.json是ts编译器的配置文件&#xff0c;ts编译器可以根据它的配置来对代码的编译 {/*tsconfig.json是ts编译器的配置文件&#xff0c;ts编译器根据它的配置来编译ts文件"include"用来指定哪些ts文件要进行编译"exclude"用来指定那些ts文件不需要进…

分布式任务调度:XXL-Job入门介绍实战

1. 引言 随着互联网业务的不断扩展和复杂化&#xff0c;分布式任务调度成为了构建大规模系统的重要组成部分。XXL-Job作为一款开源的分布式任务调度平台&#xff0c;提供了完整的任务调度和管理功能&#xff0c;被广泛应用于各种场景。本文将介绍如何入门使用XXL-Job&#xff…

Python解释器及PyCharm安装教程

PyCharm官方下载地址☞https://www.jetbrains.com/pycharm/download/?sectionwindows Python解释器官方下载地址☞ https://www.python.org/downloads/windows/

牛客小白月赛60 C 小竹关禁闭(动态规划 01背包)

题目描述 妈妈成功将小竹救了出来&#xff0c;她觉得小竹实在是太笨了&#xff0c;决定关小竹一周禁闭。可是小竹哪里能忍受失去自由&#xff0c;他早就偷藏了一部手机用于联系你&#xff0c;请求你帮助他逃离。 你通过观察发现他房间内有 n n n 个可用于制成绳子的物品&…

数学建模【灰色关联分析】

一、灰色关联分析简介 一般的抽象系统,如社会系统、经济系统、农业系统、生态系统、教育系统等都包含有许多种因素&#xff0c;多种因素共同作用的结果决定了该系统的发展态势。人们常常希望知道在众多的因素中&#xff0c;哪些是主要因素&#xff0c;哪些是次要因素;哪些因素…

Android各版本差异性

Android各版本差异性 Android 6&#xff08;api 23&#xff09; 指纹识别 运行时权限&#xff1a;动态申请&#xff08;重点&#xff09; 移除对Apache HTTP client的支持&#xff0c;建议使用HttpURLConnection。 休眠和应用待机模式&#xff08;Doze and App Standby&…

web学习笔记(二十三)

目录 1.增加节点 1.1document.write 1.2innerHTML 1.3动态添加 1.4追加和插入节点 2.删除、克隆、替换节点 2.1删除节点 2.2克隆节点 2.3替换节点 3.事件 3.1什么是事件 3.2事件三要素 3.3事件的种类 3.4常见事件名称&#xff08;类型&#xff09;汇总 4.操作…

代码随想录算法训练营第三十四天| 860.柠檬水找零, 406.根据身高重建队列 ,452. 用最少数量的箭引爆气球

860.柠檬水找零 - LeetCode 思路&#xff1a; 这个问题比较简单&#xff0c; 用一个字典bill_dict记录已经收到的钱已经钱的数量&#xff0c; 然后如果收到五元&#xff0c; 字典中的 bill_dict[5] 1。 收到10元 bill_dict[5] - 1 bill_dict[10] 1 。 麻烦的是收到20元&…

图像剪辑|Linux|ImageMagick的初步使用--素描,毛玻璃等特效

前言&#xff1a; ImageMagick在图像剪辑领域的地位基本等同于FFmpeg&#xff0c;和FFmpeg基本一样&#xff0c;在Linux下使用此工具的原因是该工具可以使用shell脚本批量剪辑&#xff0c;在Windows下就会比较麻烦一些了 那么&#xff0c;本文主要是记录一下ImageMagick的一些…

论文阅读:基于超像素的图卷积语义分割(图结构数据)

#Superpixel-based Graph Convolutional Network for Semantic Segmentation github链接 引言 GNN模型根据节点特征周围的边来训练节点特征&#xff0c;并获得最终的节点嵌入。通过利用具有不同滤波核的二维卷积对来自附近节点的信息进行整合&#xff0c;给定超像素方法生成的…

汽车上的各种质量:整备质量、总质量、装载质量、簧上质量

文章目录 前言一、整备质量二、额定总质量三、额定装载质量四、簧上质量 总结 前言 一、整备质量 整备质量指的是汽车按照出厂技术条件完全配备&#xff08;包括备胎、工具、各种油水等&#xff09;的质量。汽车的整备质量也就是人们常说的一辆汽车的自重&#xff0c;它的规范…

MATLAB--pie函数绘制复杂分类饼图(2)--附案例代码

MATLAB–pie函数绘制复杂分类数据的饼状图 目录 MATLAB--pie函数绘制复杂分类数据的饼状图摘要1. 问题描述2. 具体步骤&#xff1a;3. 绘制结果4. 小结 摘要 在数据可视化中&#xff0c;饼状图是一种常用的展示分类数据的方式。之前&#xff0c;文章介绍了使用MATLAB绘制饼状图…

数据删除

目录 数据删除 删除员工编号为 7369 的员工信息 删除若干个数据 删除公司中工资最高的员工 Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 数据删除 删除数据就是指删除不再需要的数据 delete from 表名称 [where 删…

群晖Synology Drive服务搭建结合内网穿透实现云同步Obsidian笔记文件夹

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-ebec69DBjtGk7apF {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

C++字典操作

创建字典 #include<iostream> #include<map> #include<string>using namespace std;int main(){map<string, int> mymap;}赋值 2.1 指定元素赋值 mymap["abc"] 1;2.2 添加键值对 mymap.insert(make_pair("bcd", 2));字典的顺序…

后端传给前端的时间字段前端显示不正确

具体问题是什么呢&#xff0c;就比如我后段有一个字段是TimeStamp类型&#xff0c;从数据库中查出数据是下面的样式&#xff1a; 但是前端显示的是下面的格式&#xff1a; 这个的解决方法还是挺多的&#xff0c;那接下来具体来看看吧~ 第一种&#xff1a; 在application.prop…

Linux使用bcache 将SSD加速硬盘

前言 在Linux下&#xff0c;使用SSD为HDD加速&#xff0c;目前较为成熟的方案有&#xff1a;flashcache&#xff0c;enhanceIO&#xff0c;dm-cache&#xff0c;bcache等&#xff0c;多方面比较以后最终选择了bcache。 bcache 是一个 Linux 内核块层超速缓存。它允许使用一个或…

Flink 面试题总结及答案

基础 state的分类 key state和operate state state 的重分布 Flink状态管理详解&#xff1a;Keyed State和Operator List State深度解析 - 掘金 checkpoint 和save point https://zhuanlan.zhihu.com/p/79526638 flink job 的容错策略 如果在没有持续消息输出的情况下&…

19.AUTOSAR MCAL分析(一):Microcontroller Driver

目录 1. MCAL概述 2. Microcontroller Drivers 2.1 MCU Drivers 2.2 GPT Driver 2.3 WatchDog Driver 2.4 CoreTest 3.小结 <