剑指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;
}
};
2020-04-18
在牛客打卡9天,今天学习:刷题 2 道/代码提交 2 次
全部评论

相关推荐

仁者伍敌:服务员还要脱颖而出,这是五星级酒店吗
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-03 17:37
点赞 评论 收藏
分享
zhch7:建议9✌️把学历加黑加粗,如果实在offer可能是觉得佬不会去
投了多少份简历才上岸
点赞 评论 收藏
分享
鬼迹人途:你去投一投尚游游戏,服务器一面,第一个图算法,做完了给你一个策略题,你给出方案他就提出低概率问题,答不上当场给你挂
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务