构建乘积数组
来源:互联网 发布:淘宝店贷款 编辑:程序博客网 时间:2024/06/02 21:09
题目
给定一个数组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[0]A[1]…A[i-1],即B[i] = B[i - 1] A[i - 1] ,当i = 0时B[i] = 1;然后乘以后面的A[i+1]…*A[n-1],这个可以倒过来乘,用一个res(初始为1)来存储A[i+1]…A[n-1]得值,即i从 n - 2开始,每次res = A[i + 1],然后B[i] *= res即可。
参考代码
class Solution{public: vector<int> multiply(const vector<int>& A) { int size = A.size(); vector<int> res(size, 1); for (int i = 1; i < size; ++i) { res[i] = res[i - 1] * A[i - 1]; } int ret = 1; for (int i = size - 2; i >= 0; --i) { ret *= A[i + 1]; res[i] *= ret; } return res; }};
阅读全文
0 0
- 数组------构建乘积数组
- 数组:构建乘积数组
- 构建乘积数组
- 构建乘积数组
- 52 - 构建乘积数组
- 构建乘积数组
- 构建乘积数组
- 构建乘积数组
- 牛客网 | 构建乘积数组
- 构建乘积数组
- 【模模糊糊】构建乘积数组
- 构建乘积数组
- 构建乘积数组
- 构建乘积数组
- 构建乘积数组
- 构建乘积数组
- 构建乘积数组
- 构建乘积数组 java
- Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询
- C语言union类型和C语言 uchar类型的个人见解
- 8.23训练总结
- C#操作数据库简单辅助工具
- JavaScript基础系列之五 浏览器
- 构建乘积数组
- NDK报错将报错行转换
- C语言 数组与指针(二)
- SpringMvc 文件上传并且实现与ftp服务器的对接
- SimpleDateFormat 的月份问题
- 【JZOJ5316】【清华集训2017模拟8.19】merge
- Maximum Product Subarray -- LeetCode
- shell
- 动态规划:从新手到专家