九章算法面试题40 不用除法求积
来源:互联网 发布:云计算平台性能指标 编辑:程序博客网 时间:2024/05/01 15:16
九章算法官网-原文网址
http://www.jiuzhang.com/problem/40/
题目
给定一个数组A[1..n],求数组B[1..n],使得B[i] = A[1] * A[2] .. * A[i-1] * A[i+1] .. * A[n]。要求不要使用除法,且在O(n)的时间内完成,使用O(1)的额外空间(不包含B数组所占空间)。
解答
计算前缀乘积Prefix[i] = A[1] * A[2] .. A[i],计算后缀乘积Suffix[i] = A[i] * A[i+1] .. A[n],易知,B[i] = Prefix[i - 1] * Suffix[i + 1]。实际上无需实际构造出Prefix和Suffix数组,利用B数组从左到右遍历一次得到Prefix[i],然后从右到左遍历一次,计算出所要求的B数组。
面试官角度
这种从前到后遍历和从后到前再遍历一次的方法(Foward-Backward-Traverse)在很多题目中都有借鉴。如九章算法面试题31 子数组的最大差。
0 0
- 九章算法面试题40 不用除法求积
- 腾讯的一道面试题—不用除法求数字乘积
- 九章算法面试题3 找坏球
- 九章算法面试题28 链表找环
- 九章算法面试题71 平方根
- 九章算法面试题74 中位数
- 九章算法 | Facebook 面试题 : Backpack VI 背包算法
- 面试题之九章算法 字符串编辑距离
- 九章算法——面试题思路
- 九章算法面试题1 落单的数
- 九章算法面试题2 抄书问题
- 九章算法面试题4 索引比例
- 九章算法面试题5 有序数组合并
- 九章算法面试题6 负载均衡
- 九章算法面试题7 分层遍历二叉树
- 九章算法面试题10 赛马问题
- 九章算法面试题11 递增矩阵
- 九章算法面试题12 最大子区间/矩阵
- AD9中如何灵活利用PCB Filter选择所需要的快速编辑
- loadNibNamed:方法
- 关于调用系统照相机Activity被销毁问题解决
- 可序列化
- HQL语句学习
- 九章算法面试题40 不用除法求积
- 使用NIO与BIO复制文件性能对比
- 用小米平板,如何看小度路由器所连接的移动硬盘上的视频
- 15年5月嵌入式学习笔记之系统时钟
- Lowest Common Multiple Plus(最小公倍数)
- highchart使用与图像动态代码
- Group by用法
- 提高篇第2-5课第七题
- mybatis批量插入