剑指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 次
全部评论
相关推荐
11-25 19:33
南京理工大学 C++ 乡土丁真真:佬很厉害,羡慕~虽然我还没有到校招的时候,也想讲一下自己的看法:我觉得不是CPP的问题,佬的背书双2,技术栈加了GO,有两段实习。投了123,面了30.拿到11个offer。这个数据已经很耀眼了。这不也是CPP带来的吗?当然也不止是CPP。至少来说在这个方向努力过的也会有好的结果和选择。同等学历和项目选java就会有更好的吗?我个人持疑问态度。当然CPP在方向选择上确实让人头大,但是我觉得能上岸,至于最后做什么方向,在我看来并不重要。至于CPP特殊,有岗位方向的随机性,java不是不挑方向,只是没得选而已。也希望自己以后校招的时候能offer满满
点赞 评论 收藏
分享