Product of Array Except Self
2016-06-22 11:44
204 查看
Product of Array Except Self:
O(n)时间复杂度,const额外存储空间,典型的用空间换时间的问题,之前遇到过一道求和的,这次变成求积了,原理一样,我们利用两个vector变量,先遍历一遍数组,vector1 每一个位置上存之前所有数字的乘积,再从后往前扫描,vector2 每个位置上存之后所有数字的乘积,最后在做一次循环,把vector1 和 vector2 对应位置上的数相乘,就是要求的数。
class Solution {
public:
vector<int> productExceptSelf(vector<int>& nums) {
vector<int> vec1 = { 1 };
vector<int> vec2 = {1};
vector<int> result;
int tmp = 1;
for (int cnt = 0; cnt<nums.size() - 1; cnt++)
{
tmp *= nums[cnt];
vec1.push_back(tmp);
}
tmp = 1;
for (int cnt = nums.size() - 1; cnt>0; cnt--)
{
tmp *= nums[cnt];
vec2.insert(vec2.begin(), tmp);
}
for (auto it1 = vec1.begin(), it2 = vec2.begin(); it1 != vec1.end(); it1++, it2++)
{
result.push_back((*it1)*(*it2));
}
return result;
}
};
O(n)时间复杂度,const额外存储空间,典型的用空间换时间的问题,之前遇到过一道求和的,这次变成求积了,原理一样,我们利用两个vector变量,先遍历一遍数组,vector1 每一个位置上存之前所有数字的乘积,再从后往前扫描,vector2 每个位置上存之后所有数字的乘积,最后在做一次循环,把vector1 和 vector2 对应位置上的数相乘,就是要求的数。
class Solution {
public:
vector<int> productExceptSelf(vector<int>& nums) {
vector<int> vec1 = { 1 };
vector<int> vec2 = {1};
vector<int> result;
int tmp = 1;
for (int cnt = 0; cnt<nums.size() - 1; cnt++)
{
tmp *= nums[cnt];
vec1.push_back(tmp);
}
tmp = 1;
for (int cnt = nums.size() - 1; cnt>0; cnt--)
{
tmp *= nums[cnt];
vec2.insert(vec2.begin(), tmp);
}
for (auto it1 = vec1.begin(), it2 = vec2.begin(); it1 != vec1.end(); it1++, it2++)
{
result.push_back((*it1)*(*it2));
}
return result;
}
};
相关文章推荐
- Java常见异常
- Swfit 学习tableview
- 那些容易被忽略的Python编程方式
- wdcp安装
- 解决ListView的OnItemClickListener无效问题
- impi ipmu
- 2.2、Android Studio通过注解提升代码检测
- 2.2、Android Studio通过注解提升代码检测
- jquery操作select
- 压力测试 相关
- JSTL 模板中 <c:forEach> 标签详解
- 公共技术点之 Java 动态代理
- 滚动十四天销售金额排序(全国和各区域)前20名在各城市中的订销存数量
- python3 抓取网页资源的 N 种方法
- android TextView setTextSize, 设置背景透明度和字体透明度
- 程序员如何挽救一个失败的项目?
- Win32下C++遍历目录和文件的源码
- Mina开源框架 心跳机制详解
- Swfit 学习 简单UI
- 12C CBD模式下参数文件管理