这几天特意挑的简单的题,目前都是数组相关的,这道连牛客网给的tag都是难度为一星,我连写带改bug总共也用了20分钟不到,是真的很简单
题目描述
给定一个数组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[0] = A[1] * A[2] * … * A[n-1],B[n-1] = A[0] * A[1] * … * A[n-2];)
要求:时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
解题思路
这个就是本质上就是给数组元素赋值,且值和元素位置有关,值为对应A数组中的除该位置外的其余所有元素的乘积,用两次for循环即可实现,注意不能用除法(总乘积除以该位置元素值,其实这样做会大大降低时间复杂度)
源代码
class Solution {
public:
vector<int> multiply(const vector<int>& A) {
int length=A.size();
vector<int> B;
for(int i=0;i<length;i++){
int temp=1;
for(int j=0;j<length;j++){
if(j!=i)
temp*=A[j];
}
B.push_back(temp);
}
return B;
}
};