news 2026/4/15 18:43:17

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/3 5:00:35

政务AI革命已来:Open-AutoGLM助力基层工作人员减负80%(附实测数据)

第一章&#xff1a;政务AI革命已来&#xff1a;Open-AutoGLM的时代背景与战略意义人工智能正以前所未有的速度重塑政府治理模式。在数字化转型的浪潮中&#xff0c;政务AI不再仅仅是效率工具&#xff0c;而是成为推动国家治理体系现代化的核心引擎。Open-AutoGLM作为面向政务场…

作者头像 李华
网站建设 2026/3/30 0:01:12

保险到期总忘记?Open-AutoGLM这5个提醒功能让你再无后顾之忧,

第一章&#xff1a;保险到期总忘记&#xff1f;Open-AutoGLM来帮你在现代生活中&#xff0c;车辆保险、家庭财产险等各类保单的管理常常被忽视&#xff0c;直到事故发生才追悔莫及。Open-AutoGLM 是一款基于开源大语言模型的自动化提醒工具&#xff0c;专为解决个人事务管理中的…

作者头像 李华
网站建设 2026/4/2 21:00:03

Open-AutoGLM保险管理实战指南(精准提醒+自动续保)

第一章&#xff1a;Open-AutoGLM 保险到期提醒 在现代车辆管理系统中&#xff0c;自动化的保险状态监控是提升用户体验与安全合规性的关键功能。Open-AutoGLM 是一个开源的车载智能语言模型集成框架&#xff0c;支持通过自然语言理解与定时任务调度实现个性化的服务提醒&#x…

作者头像 李华
网站建设 2026/4/15 11:13:24

Open-AutoGLM洗车预约系统安全加固(5层防护体系+零信任架构实践)

第一章&#xff1a;Open-AutoGLM洗车服务预约系统概述 Open-AutoGLM是一款基于大语言模型与自动化调度引擎的智能洗车服务预约系统&#xff0c;旨在提升用户预约效率、优化门店资源分配&#xff0c;并实现全流程无人化管理。系统融合自然语言理解能力与后端业务逻辑&#xff0c…

作者头像 李华
网站建设 2026/3/26 20:43:14

25、拿到问题之后,反馈情况

项目场景&#xff1a; 有一天&#xff0c;动物森林在开会&#xff0c;然后提出了几个森林的问题&#xff0c;不同的动物们&#xff0c;处理的方式也不一样问题描述 原因分析&#xff1a; 解决方案&#xff1a; 小乌龟说&#xff0c;这个问题我带回去问问族长&#xff0c;然后就…

作者头像 李华
网站建设 2026/3/30 21:26:00

26、iframe内联框架页面交互

交互的情况有很多种&#xff0c;特别是dom元素之间的交互&#xff1b; 后续补充。。。

作者头像 李华