题目

题链:剑指 Offer 66. 构建乘积数组

题解

题目规定了不能使用除法、这样的话i后面的数值的乘积可使用遍历了直接求出来
解法一:三指针暴力解法
这种解法是简单暴力、但时间负责度为O(n2),根据题目的数据规模10万果不其然会超时。

class Solution {public int[] constructArr(int[] a) {int i = 0 , j = 0, k = 1 ;int[] res = new int[a.length];while (j < a.length){int pcur = 1,lcur = 1;for (int l = i; l < j; l++) {pcur *= a[l];}for (int l = k; l < a.length; l++) {lcur *= a[l];}res[j] = pcur*lcur;j++;k++;}return res;}
}

解法二:另起乘积数组
我们可以起一个数组存储从大到小的数组,这样我们只要遍历两遍数组就可以了,时间复杂度降为了O(n)、但这样就会提升空间负责度为O(n)。

class Solution {public int[] constructArr(int[] a) {int n = a.length;// 数组为空时返回空数组if (n == 0){return new int[0];}int[] res = new int[n];int[] rpro = new int[n];rpro[n-1] = a[n-1];for (int i = n-2; i >= 0; i--) {rpro[i] = a[i]*rpro[i+1]; }int s = 1;for (int i = 0; i < n; i++) {if (i != n-1){res[i] = s*rpro[i+1];}else {res[i] = s;}s *= a[i];}return res;}
}

(day 49 - 另起数组牺牲空间换取时间 ) 剑指 Offer 66. 构建乘积数组相关推荐

  1. 【LeetCode】剑指 Offer 66. 构建乘积数组

    [LeetCode]剑指 Offer 66. 构建乘积数组 文章目录 [LeetCode]剑指 Offer 66. 构建乘积数组 package offer;import java.util.Arra ...

  2. 【算法】剑指 Offer 66. 构建乘积数组

    1.概述 给定一个数组 A[0,1,-,n-1],请构建一个数组 B[0,1,-,n-1],其中 B[i] 的值是数组 A 中除了下标 i 以外的元素的积, 即 B[i]=A[0]×A[1]×-×A[ ...

  3. 《剑指offer》-- 构建乘积数组、求1+2+3+...+n、不用加减乘除做加法、包含min函数的栈、用两个栈实现队列

    一.构建乘积数组: 1.题目: 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*. ...

  4. 剑指offer:构建乘积数组

    题目描述 给定一个数组A[0,1,-,n-1],请构建一个数组B[0,1,-,n-1],其中B中的元素B[i]=A[0]A[1]-*A[i-1]A[i+1]-*A[n-1].不能使用除法. 解题 暴力 ...

  5. 《剑指offer》构建乘积数组

    题目:给定一个数组A[0,1,-,n-1],请构建一个数组B[0,1,-,n-1],其中B中的元素B[i]=A[0]A[1]-A[i-1]*A[i+1]-*A[n-1].不能使用除法. 解析:由于不能 ...

  6. opencv计算两数组的乘积_#剑指Offer#12. 构建乘积数组

    题目描述:给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1]. 其中B中的元素B[i]=A[0] * A[1]... * A[i-1] * A[i+1]... * A ...

  7. java单个数组求积_[剑指offer][Java]构建乘积数组

    题目 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]A[1]...A[i-1]A[i+1]...A[n-1].不能使用除法. 程 ...

  8. 剑指offer之构建乘积数组

    题目描述 给定一个数组A[0,1,-,n-1],请构建一个数组B[0,1,-,n-1],其中B中的元素B[i]=A[0]∗A[1]∗...∗A[i−1]∗A[i+1]∗...∗A[n−1]B[i]=A ...

  9. (Java 剑指 offer)构建乘积数组

    文章目录 一.题目解析 二.代码一 三.代码二 四.总结 一.题目解析 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素 B[i]=A[0]*A[1 ...

  10. 剑指Offer-66:构建乘积数组

    题目 给定一个数组A[0, 1, -, n-1],请构建一个数组B[0, 1, -, n-1],其中B中的元素B[i] =A[0]×A[1]×- ×A[i-1]×A[i+1]×-×A[n-1].不能使 ...

最新文章

  1. mysql 5.6 uf8mb4_MySQL5.7升级到8.0过程详解
  2. mysql集群搭建教程-mysql+windows篇
  3. mysql 中间表的好处_Mysql中使用中间表提高统计查询速度
  4. 终于要来了!华为P50将提供两个版本:国内仅有鸿蒙
  5. iOS - 发送邮件
  6. ssm线上文具销售系统答辩PPT模板
  7. EMOS1.6下的php支持GD库
  8. 解锁lintcode数字图像识别
  9. windows 下pcl的安装和编译
  10. 软件过程管理课程知识点总结
  11. 办公技巧:腾讯文档怎么固定表头?
  12. 密码库LibTomCrypt学习记录——(2.13)分组密码算法的工作模式——CCM加密认证模式
  13. 7-4 韩信点兵 (10 分)
  14. python文件重命名
  15. 'localtime': This function or variable may be unsafe. Consider using localtime_s instead.
  16. 高德地图JavaScript根据后台坐标点绘制轨迹
  17. WGCNA包安装问题汇总
  18. Word 模板渲染引擎-Poi-tl - 标签(二)
  19. 不掉帧不卡顿的游戏直播画面看起来爽爆了,求网络推流搭建方案
  20. Windows 7播放各大视频网站Flash视频没有声音

热门文章

  1. Powershell中禁止执行脚本解决办法
  2. 给老师的作文:育儿经验-父母是孩子最好的老师
  3. 5.Jenkins 权威指南 --- 安全
  4. 1.apple 应用内购买
  5. Windows XP Embedded 官方下载地址
  6. DDOS 攻击工具
  7. python - zipfile模块
  8. Allegro导出STP文件
  9. 多线程--对象及变量的并发访问
  10. MVC学习笔记:MVC实现用户登录验证ActionFilterAttribute用法并实现统一授权