(day 49 - 另起数组牺牲空间换取时间 ) 剑指 Offer 66. 构建乘积数组
题目
题链:剑指 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. 构建乘积数组相关推荐
- 【LeetCode】剑指 Offer 66. 构建乘积数组
[LeetCode]剑指 Offer 66. 构建乘积数组 文章目录 [LeetCode]剑指 Offer 66. 构建乘积数组 package offer;import java.util.Arra ...
- 【算法】剑指 Offer 66. 构建乘积数组
1.概述 给定一个数组 A[0,1,-,n-1],请构建一个数组 B[0,1,-,n-1],其中 B[i] 的值是数组 A 中除了下标 i 以外的元素的积, 即 B[i]=A[0]×A[1]×-×A[ ...
- 《剑指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]*. ...
- 剑指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].不能使用除法. 解题 暴力 ...
- 《剑指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].不能使用除法. 解析:由于不能 ...
- 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 ...
- 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].不能使用除法. 程 ...
- 剑指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 ...
- (Java 剑指 offer)构建乘积数组
文章目录 一.题目解析 二.代码一 三.代码二 四.总结 一.题目解析 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素 B[i]=A[0]*A[1 ...
- 剑指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].不能使 ...
最新文章
- mysql 5.6 uf8mb4_MySQL5.7升级到8.0过程详解
- mysql集群搭建教程-mysql+windows篇
- mysql 中间表的好处_Mysql中使用中间表提高统计查询速度
- 终于要来了!华为P50将提供两个版本:国内仅有鸿蒙
- iOS - 发送邮件
- ssm线上文具销售系统答辩PPT模板
- EMOS1.6下的php支持GD库
- 解锁lintcode数字图像识别
- windows 下pcl的安装和编译
- 软件过程管理课程知识点总结
- 办公技巧:腾讯文档怎么固定表头?
- 密码库LibTomCrypt学习记录——(2.13)分组密码算法的工作模式——CCM加密认证模式
- 7-4 韩信点兵 (10 分)
- python文件重命名
- 'localtime': This function or variable may be unsafe. Consider using localtime_s instead.
- 高德地图JavaScript根据后台坐标点绘制轨迹
- WGCNA包安装问题汇总
- Word 模板渲染引擎-Poi-tl - 标签(二)
- 不掉帧不卡顿的游戏直播画面看起来爽爆了,求网络推流搭建方案
- Windows 7播放各大视频网站Flash视频没有声音