当前位置: 首页 > backend >正文

LeetCode热题100--238.除自身以外数组的乘积--中等

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. 题解

class Solution {public int[] productExceptSelf(int[] nums) {int n = nums.length;int[] suf = new int[n];suf[n-1] = 1;for (int i = n-2; i >= 0; i--){suf[i] = suf[i+1] * nums[i+1];}int pre = 1;for(int i = 0; i < n; i++){//此时pre为nums[0]到nums[i-1]的乘积,直接乘到suf[i]中suf[i] *= pre;pre *= nums[i];}return suf;}
}

3. 解析

出自这位老师:灵茶山艾府:前后缀分解,附题单!(Python/Java/C++/C/Go/JS/Rust)

  1. class Solution {
    public int[] productExceptSelf(int[] nums)
    这是一段类的定义,这里创建了一个名为"Solution"的解决方案类。
  2. int n = nums.length;
    这是将输入数组的长度赋值给变量n。
  3. int[] suf = new int[n];
    suf[n-1] = 1;
    for (int i = n-2; i >= 0; i–) {
    suf[i] = suf[i+1] * nums[i+1];
    }
    这段代码是计算右边所有数字的乘积。它首先创建一个与输入数组大小相同的新数组,并将最后一个元素赋值为1(因为没有其他元素可以相乘)。然后从倒数第二个元素开始迭代到第一个元素,在每个位置上计算当前索引右边所有数字的乘积,并将其存储在suf数组对应的位置上。
  4. int pre = 1;
    for (int i = 0; i < n; i++) {
    suf[i] *= pre;
    pre *= nums[i];
    }
    这段代码计算左边所有数字的乘积,并与当前位置右边的乘积相乘。它使用两个变量pre来存储这个值(初始为1)和数组suf。在每次迭代中,pre和suf[i]都被更新以包含当前元素左边所有数字的乘积。
  5. return suf;
    最后,函数返回结果数组suf。这是输入数组每个位置的除自身外的所有数字的乘积。
http://www.xdnf.cn/news/4321.html

相关文章:

  • 替换所有的问号 --- 模拟
  • Windows下安装EMQX服务代理和MQTTX客户端服务器
  • 小土堆pytorch--transform
  • sqli-labs靶场通关保姆级教学(Get传输篇)Less-1Less-10
  • CyberSentinel AI开源程序 是一个自动化安全监控与AI分析系统
  • (一)毛子整洁架构(Domain Layer/Repository Pattern/Result Pattern/Error Pattern)
  • Python基于Django的在线考试系统【附源码、文档说明】
  • WiFi那些事儿(六)
  • JavaSE核心知识点01基础语法01-03(流程控制:顺序、分支、循环)
  • C语言的重要知识点☞static关键字
  • C语言_可变参数_LOG宏
  • 2.Redis高阶实战
  • git常用命令
  • RN学习笔记 ✅
  • 如何判断内核模块是否为最新版本?
  • tinyrenderer笔记(上)
  • 【Linux我做主】深入探讨从冯诺依曼体系到进程
  • v-modal失效如何解决
  • 深入浅出iOS性能优化:打造极致用户体验的实战指南
  • 仓颉语言深度解析
  • 如何建设网站?网站建设简单步骤有哪些?
  • 认识不同格式的点云数据 -OFF格式数据转点云
  • 程序员学商务英语之Shipment Claim 运输和索赔
  • C#问题 加载格式不正确解决方法
  • Python生活手册-Numpy多维数组构建:从快递分拣到智能家居的数据变形术
  • 【AI微信小程序开发】火锅计时小程序项目代码:自动涮煮计时(含完整前端代码)
  • cesium之自定义地图与地图叠加
  • python刷题笔记:三目运算符的写法
  • vue3+vite+AI大模型实现谷歌插件-web诊断
  • 高频PCB设计如何选择PCB层数?