news 2026/7/24 14:54:47

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/7/22 21:57:51

揭秘Open-AutoGLM体检数据查询机制:5步实现高效精准调用

第一章&#xff1a;揭秘Open-AutoGLM体检数据查询机制的核心原理Open-AutoGLM 是一个基于大语言模型与自动化图谱推理的健康数据智能系统&#xff0c;其核心能力之一在于高效、安全地解析和响应用户的体检数据查询请求。该机制融合了自然语言理解、知识图谱匹配与隐私保护策略&…

作者头像 李华
网站建设 2026/7/22 5:19:57

Open-AutoGLM实战指南:7步搭建企业级智能会议纪要系统

第一章&#xff1a;Open-AutoGLM会议纪要生成系统概述Open-AutoGLM 是一个基于开源大语言模型的智能会议纪要自动生成系统&#xff0c;旨在提升企业会议信息处理效率&#xff0c;实现从原始语音或文字记录到结构化会议摘要的端到端自动化。该系统融合了语音识别、自然语言理解与…

作者头像 李华
网站建设 2026/7/23 1:55:24

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

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

作者头像 李华
网站建设 2026/7/19 13:02:09

从数据到决策,Open-AutoGLM如何重构车辆生命周期管理

第一章&#xff1a;从数据到决策&#xff0c;Open-AutoGLM如何重构车辆生命周期管理在智能汽车快速发展的今天&#xff0c;车辆生命周期管理正面临前所未有的数据挑战。从研发测试、生产制造到用户驾驶行为监控与售后服务&#xff0c;海量异构数据的实时处理与智能分析成为核心…

作者头像 李华