面试题56:构建乘积数组
来源:互联网 发布:淘宝联盟如何赚钱 编辑:程序博客网 时间:2024/05/22 21:43
题目:
给定一个数组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]。不能使用除法。
思路:
令C[i]=A[0]*A[1]*...*A[i-1,D[i]=A[i+1]*...*A[n-1]
则有B[i]=C[i]*D[i]
又C[i+1]=C[i]+A[i],D[i]=D[i+1]*A[i+1]
时间复杂度:O(n)
空间复杂度:O(1)
#include <iostream> #include <vector> using namespace std;void ArrMul(int *A, int size,vector<int> &B){vector<int> C(size);vector<int> D(size);C[0] = 1;D[size - 1] = 1;for (int i = 1; i < size; i++){C[i] = C[i - 1] * A[i - 1];D[size - i - 1] = D[size - i] * A[size - i];}for (int i = 0; i < size; i++) B[i] = C[i] * D[i];}int main(){int arr[] = { 1, 2, 3 };vector<int> re(3);ArrMul(arr, 3, re);for (int i = 0; i < re.size(); i++)cout << re[i] << " ";cout << endl;return 0;}
0 0
- 面试题56:构建乘积数组
- 面试题52:构建乘积数组
- 面试题52: 构建乘积数组
- 面试题52:构建乘积数组
- 《剑指Offer》学习笔记--面试题52:构建乘积数组
- 【剑指Offer学习】【面试题52:构建乘积数组】
- 剑指offer-面试题52:构建乘积数组
- 剑指offer--面试题52:构建乘积数组
- 剑指Offer面试题52:构建乘积数组 Java实现
- 剑指Offer系列-面试题52:构建乘积数组
- 剑指offer-面试题52-构建乘积数组
- 剑指offer 面试题52 构建乘积数组
- 【剑指Offer】面试题52:构建乘积数组
- 【剑指Offer学习】【面试题52:构建乘积数组】
- 【剑指offer】面试题66:构建乘积数组
- 剑指offer——面试题52:构建乘积数组
- 剑指offer1面试题52 构建乘积数组(java实现)
- 数组------构建乘积数组
- maven安装
- 环信iOS 简单集成3.0实时通话
- Linux 运行级别
- 创建型模式5之1-FactoryMethod工厂方法模式例子理解
- Android 之退出应用
- 面试题56:构建乘积数组
- window能远程,但不能ping通
- 使用MyBatis_Generator生成Dto、Dao、Mapping
- Android 手把手教你开发轮转大图控件
- readb,readw,readl,writeb,writew,writel宏函数的讲解
- stack/package beginner_tutorials not found
- NAND Flash K60 Using
- 字节转换为多少mb,kb
- 按键矩阵(单键有效)