news 2026/5/1 8:38:40

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
hot100 238.除自身以外的数组的乘积

思路:

一、前后缀分解

1.answer[i]等于nums中除了nums[i]之外的其余各元素的乘积。换句话说,如果知道了i左边所有数的乘积,以及i右边所有数的乘积,就可以算出answer[i]。

2.定义pre[i]和post[i]:

(1)定义pre[i]表示从nums[0]到nums[i -1]的乘积。

(2)定义post[i]表示从nums[i + 1]到nums[n - 1]的乘积。

3.计算pre[i]和post[i]:

(1)要计算pre[i],可以先计算出nums[0]到nums[2]的乘积pre[i - 1],再乘上nums[i - 1],就得到了pre[i]。即pre[i] = pre[i - 1] * nums[i - 1]。

(2)同理可得,post[i] = post[i + 1] * nums[i + 1]。

4.设置初始值:pre[0] = post[n - 1] = 1。

5.所求结果answer[i] = pre[i] * post[i]。

6.复杂度分析:

(1)时间复杂度:O(n),其中n是nums的长度。

(2)空间复杂度:O(n)。

附代码:

class Solution { public int[] productExceptSelf(int[] nums) { int n = nums.length; int[] pre = new int[n]; pre[0] = 1; for(int i = 1;i < n;i++){ pre[i] = pre[i - 1] * nums[i - 1]; } int[] post = new int[n]; post[n - 1] = 1; for(int i = n - 2;i >= 0;i--){ post[i] = post[i + 1] * nums[i + 1]; } int[] ans = new int[n]; for(int i = 0;i < n;i++){ ans[i] = pre[i] * post[i]; } return ans; } }

二、优化先后缀分解(不使用额外空间)

1.思路:先计算post,然后一边计算pre,一边把pre直接乘到post[i]中,最后返回post。由于题目中说明输出数组不被视为额外空间,所以该做法的空间复杂度为O(1)。此外,这种做法可以少遍历一次。

2.复杂度分析:

(1)时间复杂度:O(n),其中n是nums的长度。

(2)空间复杂度:O(1),返回值不计入。

附代码:

class Solution { public int[] productExceptSelf(int[] nums) { int n = nums.length; int[] post = new int[n]; post[n - 1] = 1; for(int i = n - 2;i >= 0;i--){ post[i] = post[i + 1] * nums[i + 1]; } int pre = 1; for(int i = 0;i < n;i++){ //此时pre为nums[0]到nums[i - 1]的乘积,可以直接乘到post[i]中 post[i] *= pre; pre *= nums[i]; } return post; } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 6:34:05

医院挂号难终结者(Open-AutoGLM技术深度解析)

第一章&#xff1a;医院挂号难终结者&#xff08;Open-AutoGLM技术深度解析&#xff09;在医疗资源紧张的背景下&#xff0c;医院挂号难长期困扰患者。Open-AutoGLM 技术应运而生&#xff0c;通过融合自然语言理解与自动化调度系统&#xff0c;实现智能分诊、动态号源分配和实时…

作者头像 李华
网站建设 2026/4/17 18:53:23

【Java毕设全套源码+文档】基于springboot的大学生家教管理系统设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/5/1 6:05:25

【内部流出】Open-AutoGLM工程师亲授:高优先级工单生成秘诀

第一章&#xff1a;Open-AutoGLM 维修服务预约Open-AutoGLM 是一个基于大语言模型驱动的智能汽车维修服务平台&#xff0c;专为车主提供高效、精准的维修预约与服务推荐。该系统通过自然语言理解技术解析用户需求&#xff0c;自动匹配最近的维修站点并完成预约流程。服务接入方…

作者头像 李华
网站建设 2026/5/1 6:08:58

告别手动查询:Open-AutoGLM实现社保信息自动化采集的3大核心技巧

第一章&#xff1a;告别手动查询&#xff1a;Open-AutoGLM赋能社保信息自动化在数字化政务加速推进的今天&#xff0c;社保信息查询仍常依赖人工操作&#xff0c;效率低且易出错。Open-AutoGLM 作为一款融合大语言模型与自动化流程引擎的开源工具&#xff0c;为社保系统提供了端…

作者头像 李华
网站建设 2026/4/16 14:11:00

紧急通知:全国首批Open-AutoGLM试点单位名单公布,你的城市在列吗?

第一章&#xff1a;紧急通知&#xff1a;全国首批Open-AutoGLM试点单位名单公布&#xff0c;你的城市在列吗&#xff1f;国家人工智能发展办公室于今日正式发布《关于推进自主可控大模型应用落地的指导意见》&#xff0c;并同步公布了全国首批Open-AutoGLM试点单位名单。该计划…

作者头像 李华
网站建设 2026/4/18 13:18:09

为什么90%的洗车平台都失败了?Open-AutoGLM架构设计中的6个关键决策

第一章&#xff1a;为什么90%的洗车平台都失败了&#xff1f;在共享经济与O2O模式兴起的浪潮中&#xff0c;无数创业者涌入“互联网洗车”赛道&#xff0c;试图复制滴滴或美团的成功路径。然而现实残酷——超过90%的洗车平台在18个月内倒闭。其根本原因并非市场需求不足&#x…

作者头像 李华