尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

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

hot100 238.除自身以外的数组的乘积
📅 发布时间:2026/6/19 2:28:04

思路:

一、前后缀分解

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; } }

相关新闻

  • Open-AutoGLM保险管理实战指南(精准提醒+自动续保)
  • 从0到上线:中小企业如何用Open-AutoGLM搭建专属证件照服务平台
  • 揭秘Open-AutoGLM待办同步黑科技:如何实现跨平台零延迟数据同步

最新新闻

  • 2026年陕西企业变更服务深度解析:实力企业如何选择 - 品牌鉴赏官2026
  • Simulink与AirSim联合仿真:无人机自主飞行算法开发与测试
  • 考公父母帮选机构怎么比?2026粉笔、中公、华图、导氮对比
  • 终极炉石传说增强插件:HsMod 55+功能完全指南
  • 一体机是什么?为什么越来越多的人选择它?
  • 2026年中,东莞奶茶店如何选择靠谱的门头招牌型材定制伙伴? - 品牌鉴赏官2026

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号