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

016除了自身以外数组的乘积

除了自身以外数组的乘积

题目链接:https://leetcode.cn/problems/product-of-array-except-self/description/?envType=study-plan-v2&envId=top-100-liked

我的解答:

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

分析:代码的时间复杂度为O(n),空间复杂度为O(n)。思路:用两个数组分别保存每个数的前缀乘积和后缀乘积,每个元素可以根据自身的前缀乘积和后缀乘积得出答案。

看了官方题解后的解答:

//方法一与我的解答相同 //方法二:空间复杂度 O(1) 的方法 //算法思想与方法一相同,只是利用输出数组将空间复杂度从O(n)优化为了O(1) //注意:输出数组不算在空间复杂度内 public int[] productExceptSelf(int[] nums) { int n=nums.length; int[] ans = new int[n];//先将输出数组当作后缀乘积数组 int before=1;//维护每个数的前缀乘积 ans[n-1]=1; for(int i=n-2; i>=0; i--){ ans[i]=nums[i+1]*ans[i+1]; } for(int i=0; i<n; i++){ ans[i]*=before; before*=nums[i]; } return ans; }

分析:

​ 1、代码的时间复杂度为O(n),空间复杂度为O(1)。

​ 2、方法二利用输出数组维护后缀乘积,在得到答案的同时用一个变量维护每个元素的前缀乘积,从而将空间复杂度从方法一的O(n)优化为了O(1)。

总结

  • 本题的思路比较简单,很容易做对,但是在做对题的基础上对空间复杂度进行进一步优化的方案可能不太容易想到。
http://www.jsqmd.com/news/762500/

相关文章:

  • 视频转PPT神器:3分钟智能提取视频中的PPT内容完整指南
  • AMD Ryzen内存时序监控终极指南:ZenTimings工具完全教程
  • 视觉个性化图灵测试(VPTT):AI如何学习人类审美偏好
  • SwarmClaw:基于群体智能的分布式AI智能体协作框架实践
  • 如何在3秒内破解百度网盘提取码?这个免费工具让你告别搜索焦虑
  • TechXueXi跨平台同步终极指南:实现多设备学习进度统一管理
  • 3分钟快速上手:零代码抖音直播弹幕数据抓取完整指南
  • 5分钟掌握N_m3u8DL-CLI-SimpleG:Windows平台终极视频下载神器指南
  • Sunshine游戏串流终极指南:5个实用技巧打造完美远程游戏体验
  • NetHack常见问题解答:新手到专家的疑惑解决
  • NW.js模块化开发实践:应用架构与代码组织终极指南
  • Informer滚动预测参数调优指南:从seq_len到label_len,如何根据你的数据特性设置?
  • 展会技能体系:从展台到订单的转化闭环与实战策略
  • QQ音乐加密文件解密终极指南:qmcdump 让你的音乐重获自由
  • 别再为期刊投稿发愁了!手把手教你用LaTeX搞定作者照片和简介(IEEE/Elsevier通用)
  • 用快马 AI 快速原型开发:十分钟搭建你的 Obsidian 网页剪藏工具
  • Electron-React-Boilerplate与Svelte结合:构建高性能桌面应用的终极指南
  • 保姆级教程:用ROS1和MAVROS在Gazebo中实现PX4无人机Offboard模式(附完整Python代码)
  • 017缺失的第一个正数
  • 避坑指南:Qt程序运行时切换语言,为什么你的界面翻译不生效?
  • CompressorJS服务端渲染终极指南:5个高效图片压缩技巧
  • 从o4f6bgpac3/concise看现代代码库的简洁设计哲学与实践
  • 如何用fastbook掌握生成对抗网络:创造式AI应用开发完整指南
  • ESP-01S新手避坑指南:用AT指令搞定AP热点和连接WiFi(附固件刷写提醒)
  • U-Bench医学图像分割基准:百种U-Net变体横向评测
  • React+TypeScript项目架构守护:ArchGuard实战指南
  • 别再死记硬背公式了!手把手推导蓝桥杯超声波测距(CX20106A)的距离计算公式
  • 三步实现QQ音乐加密文件解码:qmcdump技术原理与实战应用
  • FDM打印可动关节避坑指南:从PLA断裂到TPU太软,我踩过的5个坑和解决方案
  • Pipenv多语言支持:国际化项目环境管理终极指南