从零学算法(LCR 191)

news2025/1/22 14:55:54

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

  • 我的原始人解法:首先如果没有 0,那就先得到每个数的乘积 x,然后最终结果 ans[i] = x/arrayA[i];如果只有一个 0,只需要计算出除了这个 0 以外其他数的乘积,否则就都是 0 了
  •   public int[] statisticalResult(int[] nums) {
          int x = 1, zero = 0;
          for(int n:nums){
              if(n==0 && zero == 0){
              // 如果是第一个 0 我就暂且跳过这个 0 继续计算乘积
              // 这时为了应对数组中只有一个 0 的情况,为 0 的那个对应为除了 0 的乘积
              // 否则就不管你了,全为 0 吧
                  zero++;
                  continue;
              }
              x *= n;
          }
          int[] ans = new int[nums.length];
          for(int i=0;i<nums.length;i++){
          	// 如果有 0 那只有是 0 那一位能为 x,只有一个 0 的话 x 还能为正数,否则就为 0
              if(zero > 0)
                  ans[i] = nums[i]==0?x:0;
               // 为了防止 0 被作为被除数,所以就这样了
              else 
                  ans[i] = x/nums[i];
          }
          return ans;
      }
    
  • 他人题解:首先为了防止除 0,我们索性就只用乘法来解决。根据题意我们可以得到以下 B[i] 的计算公式,就是除了 A[i] 以外其他 A[x] 的乘积。比如 B[2] = A[0] x A[1] x A[3] x...,那么其实你也可以看做 B[2] = A[0] x A[1] x A[2] x A[3] x...,只不过这个 A[2] 为 1,即 B[i] = A[0] x A[1] x ... x A[i-1] x 1 * A[i+1]...,这也就是下表的由来。我们不着急直接计算,而是观察规律,你会发现可以分为两个三角
    请添加图片描述
  • 其中绿色那个三角的
    • B[0] = 1
    • B[1] = A[0]
    • B[2] = A[0] x A[1]
    • B[3] = A[0] x A[1] x A[2]
  • 你发现没有,这个乘积貌似是可以迭代的,即 i 从 1开始,B[i] = B[i-1] x A[i-1]
    • B[0] = 1
    • B[1] = A[0] = B[0] x A[0]
    • B[2] = A[0] x A[1] = B[1] x A[1]
    • B[3] = A[0] x A[1] x A[2] = B[2] x A[2]
  • 也就是我们只要以 1 为起点就能得到下三角的乘积了,也算是得到了每个 B[i] 的一半乘积
  • 下三角我们也是同理从 1 开始迭代,之前顺着能直接用结果数组 B 来迭代,上三角得倒着来,我们原理还是不变,用一个 temp 来从 1 开始迭代好了,让他不断乘以 A[n],A[n-1]…
  •   public int[] statisticalResult(int[] a) {
          int n = a.length;
          if(n == 0) return new int[0];
          int[] b = new int[n];
          b[0] = 1;
          int temp = 1;
          // 先得到 b[i] 的下三角乘积,也就是 b[i] 的一半乘积
          for(int i=1;i<n;i++){
              b[i] = b[i-1] * a[i-1];
          }
          // 对照上面的表看,迭代顺序为从下往上,
          // 所以先乘以 1,然后乘以 A[n],然后乘以 A[n]xA[n-1]...
          // 我们用 temp 来表示这个迭代的数
          for(int i=n-1;i>=0;i--){
          	// b[i] 乘上自己的另一半乘积
              b[i] *= temp;
              temp *= a[i];
          }
          return b;
      }
    

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

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

相关文章

基于MAC地址划分VLAN实验

背景 随着互联网迅速发展,及电脑终端的小型化,企业移动化办公需求日益增加。 传统的基于接口划分VLAN已不能满足移动办公环境下位置变化导致终端所在子网变化,从而影响企业员工固定ip的终端位置移动后不能正常获取原IP;另一方面也影响网络安全,如部门之间子网不能互通,…

Kafka快速实战以及基本原理详解

文章目录 1、Kafka介绍1.1、MQ的作用1.2、为什么要用Kafka 2、Kafka快速上手2.1、实验环境2.2、单机服务体验2.3、理解Kakfa的消息传递机制 1、Kafka介绍 ​ ChatGPT对于Apache Kafka的介绍&#xff1a; Apache Kafka是一个分布式流处理平台&#xff0c;最初由LinkedIn开发并于…

Android studio升级Giraffe | 2022.3.1 Patch 1踩坑

这里写自定义目录标题 not "opens java.io" to unnamed module错误报错信息解决 superclass access check failed: class butterknife.compiler.ButterKnifeProcessor$RScanner报错报错信息解决 Android studio升级Giraffe | 2022.3.1 Patch 1后&#xff0c;出现项目…

架构案例-架构真题2016(四十)

&#xff08;2016&#xff09;嵌入式处理器是嵌入式系统的核心部件&#xff0c;一般可分为嵌入式微处理器&#xff08;MPU&#xff09;微控制器&#xff08;MCU&#xff09;、数字信号处理器&#xff08;DSP&#xff09;和片上系统&#xff08;SOC&#xff09;。以下叙述中&…

Python函数绘图与高等代数互融实例(七): 极限图|气泡图|棉棒图

Python函数绘图与高等代数互融实例(一):正弦函数与余弦函数 Python函数绘图与高等代数互融实例(二):闪点函数 Python函数绘图与高等代数互融实例(三):设置X|Y轴|网格线 Python函数绘图与高等代数互融实例(四):设置X|Y轴参考线|参考区域 Python函数绘图与高等代数互融实例(五…

第十四届蓝桥杯大赛软件赛决赛 C/C++ 大学 B 组 试题 C: 班级活动

[蓝桥杯 2023 国 B] 班级活动 【问题描述】 小明的老师准备组织一次班级活动。班上一共有 n n n 名&#xff08; n n n 为偶数&#xff09;同学&#xff0c;老师想把所有的同学进行分组&#xff0c;每两名同学一组。为了公平&#xff0c;老师给每名同学随机分配了一个 n n …

33.栈,队列练习题(王道2023数据结构第3章综合应用)

试题1&#xff08;3.1.4节题3&#xff09;&#xff1a; 假设以 I 和 O 分别表示入栈和出栈操作。栈的初态和终态均为空&#xff0c;入栈和出栈的操作序列可表示为仅有 I 和 O 组成的序列&#xff0c;可以操作的序列为合法序列&#xff0c;否则称为非法序列。 &#xff08;1&a…

C++——namespace std

命名空间&#xff08;namespace&#xff09; 0.使用方法 namespace 命名空间名 {... } 1. 每个命名空间都是一个作用域 同其他作用域类似&#xff0c;命名空间中的每个名字都必须表示该空间内的唯一实体。因为不同命名空间的作用域不同&#xff0c;所以在不同命名空间内可以…

Neural Insights for Digital Marketing Content Design 阅读笔记

KDD-2023 很值得读的文章&#xff01; 1 摘要 电商里&#xff0c;营销内容的实验&#xff0c;很重要。 然而&#xff0c;创作营销内容是一个手动和耗时的过程&#xff0c;缺乏明确的指导原则。 本文通过 基于历史数据的AI驱动的可行性洞察&#xff0c;来弥补 营销内容创作 和…

96 # cookie

cookie 和 session 和 sessionStorage 和 localStorage localStorage 和 sessionStorage 本地储存&#xff08;发送请求不会携带&#xff09;&#xff0c;不能跨域localStorage 浏览器关闭后不会清空&#xff0c;必须手动清空sessionStorage 浏览器关闭后就会销毁http 无状态的…

【Vue】条件渲染列表渲染来啦

hello&#xff0c;我是小索奇哈&#xff0c;精心制作的Vue系列持续发放&#xff0c;涵盖大量的经验和示例&#xff0c;由浅入深进行讲解。 本章给大家讲解的是条件&列表渲染&#xff0c;前面的章节已经更新完毕&#xff0c;后面的章节持续输出&#xff0c;有任何问题都可以…

Anaconda启动错误

错误 An unexpected error occurred on Navigator start-up | Could not find a suitable TLS CA certificate bundle, invalid path 导致Anaconda启动失败&#xff01; [解决办法]1 找到anaconda的安装目录&#xff0c;该目录下的__init__.py 这两处分别改为verifyself.sessio…

程序员不得不知道的排序算法-上

目录 前言 1.冒泡排序 2.选择排序 3.插入排序 4.希尔排序 5.快速排序 6.归并排序 总结 前言 今天给大家讲一下常用的排序算法 1.冒泡排序 冒泡排序&#xff08;Bubble Sort&#xff09;是一种简单的排序算法&#xff0c;它重复地从待排序的元素中比较相邻的两个元素&a…

如何制作gif动图gif (多图合成gif、GIF录制软件、视频制作成GIF动图)

文章目录 1 在线制作多图合成gif动画2 GIF录制软件3 将现有的视频 制作成GIF动图 1 在线制作多图合成gif动画 在线制作gif动画链接:https://www.matools.com/gif ①选择需要制作gif动画的图片将其添加 ②调整时间间隔&#xff0c;图片宽高等设置 ③一键生成gif ④下载到本…

十年耕耘,致力于让垂直领域合作企业提升竞争力

2013年6月叶帆科技公司成立&#xff0c;时光如驹&#xff0c;距今已经十年了&#xff08;叶帆科技的前身叶帆工作室&#xff0c;官方博客上的第一篇博文发表于2004年6月&#xff0c;已近二十年了&#xff09;。 十年时间&#xff0c;初心不变&#xff0c;一直和各垂直领域的企…

最新AI写作系统ChatGPT源码/支持GPT4.0+GPT联网提问/支持ai绘画Midjourney+Prompt应用+MJ以图生图+思维导图生成

一、智能创作系统 SparkAi创作系统是基于国外很火的ChatGPT进行开发的Ai智能问答系统。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT&#xff1f;小编这里写一个详细图文教程吧&…

使用ElementUI完成登入注册的跨域请求提高开发效率

&#x1f3ac; 艳艳耶✌️&#xff1a;个人主页 &#x1f525; 个人专栏 &#xff1a;《Spring与Mybatis集成整合》​​​​​​​ ⛺️ 生活的理想&#xff0c;为了不断更新自己 ! 目录 ​编辑 1、前言 1.1.什么是ELementUI 2、完成登陆注册前端页面 2.1环境搭建 运行…

通过pfx格式证书生成Nginx的SSL证书

1、安装openssl 工具地址&#xff1a;Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions 安装完成后&#xff0c;自行配置环境变量。 2、生成证书 &#xff08;1&#xff09;以管理员身份运行cmd&#xff0c;进入到pfx文件的目录&#xff1a; &#x…

CSS详细基础(二)文本样式

插播一条CSS的工作原理&#xff1a; CSS是一种定义样式结构如字体、颜色、位置等的语言&#xff0c;被用于描述网页上的信息格式化和显示的方式。CSS样式可以直接存储于HTML网页或者单独的样式单文件。无论哪一种方式&#xff0c;样式单包含将样式应用到指定类型的元素的规则。…

postman记录backup

之前一直未登录postman&#xff0c;在临时空间处理请求&#xff0c;可能是因为postman更新了&#xff0c;导致其记录没了 别着急&#xff01; 首先我们先登录postman&#xff0c;有谷歌登录方式等 第一步、登录后点击import 第二步、点击files 第三步、找到c:/users/AppData…