剑指offer51:构建乘积数组 (Leetcode66)
解法一:基于两层for循环的暴力法(超出时间限制)
class Solution {
public:
vector<int> multiply(const vector<int>& A) {
int Size = A.size();
vector<int> B(Size, 1);
for (int i = 0; i<Size; i++)
{
for (int j = 0; j<Size; j++)
{
if (j != i)
B[i] *= A[j];
}
}
return B;
}
};
解法二:基于对称遍历 (执行用时48ms,内存消耗24.6MB)
class Solution2 {
public:
vector<int> constructArr(vector<int>& a) {
int n = a.size();
vector<int> ret(n, 1);
int left = 1;
for (int i = 0; i < n; i++) {
ret[i] = left;
left = left * a[i];
}
int right = 1;
for (int i = n - 1; i >= 0; i--) {
ret[i] *= right;
right *= a[i];
}
return ret;
}
};
解法一:基于两层for循环的暴力法(超出时间限制)
class Solution {
public:
vector<int> multiply(const vector<int>& A) {
int Size = A.size();
vector<int> B(Size, 1);
for (int i = 0; i<Size; i++)
{
for (int j = 0; j<Size; j++)
{
if (j != i)
B[i] *= A[j];
}
}
return B;
}
};
解法二:基于对称遍历 (执行用时48ms,内存消耗24.6MB)
class Solution2 {
public:
vector<int> constructArr(vector<int>& a) {
int n = a.size();
vector<int> ret(n, 1);
int left = 1;
for (int i = 0; i < n; i++) {
ret[i] = left;
left = left * a[i];
}
int right = 1;
for (int i = n - 1; i >= 0; i--) {
ret[i] *= right;
right *= a[i];
}
return ret;
}
};
2020-04-18
在牛客打卡9天,今天学习:刷题 2 道/代码提交 2 次
全部评论
相关推荐
点赞 评论 收藏
分享
12-08 18:11
曲阜师范大学 Java
程序员花海_:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的 点赞 评论 收藏
分享
11-24 22:32
西安电子科技大学 Java 点赞 评论 收藏
分享
