构建乘积数组
来源:互联网 发布:常用医学软件 编辑:程序博客网 时间:2024/06/06 03:31
题目描述
给定一个数组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]。不能使用除法。
方法一:另外开辟了两个大小为n的空间,存储当前元素左右乘积,空间复杂度比较高
class Solution {public: vector<int> multiply(const vector<int>& A) { vector<int> B(A.size(),0); vector<int> left(A.size(),1); vector<int> right(A.size(),1); int tmp1=1,tmp2=1; for(int i=0;i<A.size()-1;i++){ tmp1*=A[i]; left[i+1]=tmp1; } for(int i=A.size()-1;i>0;i--){ tmp2*=A[i]; right[i-1]=tmp2; } for(int i=0;i<A.size();i++) B[i]=left[i]*right[i]; return B; }};
方法二:参考剑指offer,不用另外开辟空间
class Solution {public: vector<int> multiply(const vector<int>& A) { vector<int> B(A.size(),1); int tmp=1; for(int i=1;i<A.size();i++) B[i]=B[i-1]*A[i-1]; for(int i=A.size()-1;i>=0;i--){ B[i]=B[i]*tmp; tmp*=A[i]; } return B; }};
阅读全文
0 0
- 数组------构建乘积数组
- 数组:构建乘积数组
- 构建乘积数组
- 构建乘积数组
- 52 - 构建乘积数组
- 构建乘积数组
- 构建乘积数组
- 构建乘积数组
- 牛客网 | 构建乘积数组
- 构建乘积数组
- 【模模糊糊】构建乘积数组
- 构建乘积数组
- 构建乘积数组
- 构建乘积数组
- 构建乘积数组
- 构建乘积数组
- 构建乘积数组
- 构建乘积数组 java
- java初始化深入理解
- C++ STL 一般总结
- Vector用法
- python time模块
- 大型网站是怎样解决多用户高并发访问的
- 构建乘积数组
- 递归法(Recursion)
- 关于AOP无法切入同类调用方法的问题
- Hive常用运算(关系运算)、逻辑运算与数学运算、数值运算、日期函数、条件函数、字符串函数
- struts中action的创建和属性注入
- canvas
- 《五》uploadify插件上传文件
- 掌握 NumPy 常用函数
- Hdu2014 青年歌手大奖赛_评委会打分