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

[Java][Leetcode middle] 238. 除自身以外数组的乘积

第一个想法是:

想求出所有元素乘积,然后除以i对应的元素本书;这个想法是完全错误的:

  1. nums[I] 可能有0
  2. 题目要求了不能用除法

第二个想法是:

其实写之前就知道会超时,但是我什么都做不到啊!
双重循环,O(n2)

第三个做法: 借助辅助数组,官方题解

借助辅助数组:使用L[i],R[i],分别记录i左边和右边元素的乘积
那么res[I],就是L[I]*R[i]

public int[] productExceptSelf2(int[] nums) {int len = nums.length;int[] result = new int[len];int[] R = new int[len]; //  the right of i: multiplyint[] L = new int[len]; // the left of i: multiplyL[0] = 1;R[len - 1] = 1;for (int i = 1; i < len; i++) {L[i] = L[i - 1] * nums[i - 1];}for (int i = len - 2; i >= 0; i--) {R[i] = R[i + 1] * nums[i + 1];}for (int i = 0; i < len; i++) {result[i] = L[i] * R[i];}return result;}
}

做法四:先用result[]代替上文的L[]

    public int[] productExceptSelf3(int[] nums) {int len = nums.length;int[] result = new int[len];result[0] = 1;for (int i = 1; i < len; i++) {result[i] = result[i - 1] * nums[i - 1];}int R = 1;for(int i = len-1 ; i >= 0 ; i--) {result[i] = R * result[i];R *= nums[i];}return result;}

相关文章:

  • 挖o心得(1)
  • BUFDS_GTE2,IBUFDS,BUFG缓冲的区别
  • 技术解码 | 腾讯云SRT弱网优化
  • Vue3 加快页面加载速度 使用CDN外部库的加载 提升页面打开速度 服务器分发
  • sqli-labs靶场23-28a关(过滤)
  • WHAT - 缓存命中 Cache Hit 和缓存未命中 Cache Miss
  • 掌握HTML文件上传:从基础到高级技巧
  • 我设计的一个安全的 web 系统用户密码管理流程
  • 国芯思辰| 轮速传感器AH741对标TLE7471应用于汽车车轮速度感应
  • 【Python-Day 14】玩转Python字典(上篇):从零开始学习创建、访问与操作
  • 【CPT】可重复性
  • C++(15):默认值(default)
  • UI自动化测试详解
  • 开源鸿蒙北向源码开发: 5.0kit化相关sdk编译
  • 【Win32 API】 lstrcpyA()
  • 中国 MRO 的市场概况及发展趋势
  • vscode debug node + 前端
  • Wise Disk Cleaner:免费系统清理工具,释放空间,提升性能
  • matlab建立整车模型,求汽车的平顺性
  • 【PmHub后端篇】PmHub 中缓存与数据库一致性的实现方案及分析
  • 外交部部长助理兼礼宾司司长洪磊接受美国新任驻华大使递交国书副本
  • 租车订单时隔7年从花呗免密扣费?“GoFun出行”引质疑
  • 临港新片区将新设5亿元启航基金:专门投向在临港发展的种子期、初创型企业
  • 既是工具又是食物,可食用机器人开启舌尖上的新科技
  • 普京调整俄陆军高层人事任命
  • 证监会发布《上市公司募集资金监管规则》,6月15日起施行