/*class Solution {
public:
//使用除法
//分三种情况:数组中没有0;只有一个0和有大于等于2个0
vector<int> constructArr(vector<int>& a) {
int numOfZero = 0;
int indexOfZero = INT_MAX;
int multi = 1;
for(int i = 0; i < a.size(); i++) {
if(a[i] == 0) {
indexOfZero = i;
numOfZero++;
if(numOfZero >= 2) {
break;
}
}
if(a[i] == 0) {
continue;
}
multi *= a[i];
}
if(numOfZero == 1) {
vector<int> ans(a.size(), 0);
ans[indexOfZero] = multi;
return ans;
}
if(numOfZero == 2) {
return vector<int>(a.size(), 0);
}
vector<int> ans(a.size());
for(int i = 0; i < a.size(); i++) {
ans[i] = multi / a[i];
}
return ans;
}
};*/
class Solution {
public:
//将题目所给的两个相同的数组进行列二维表格,相同元素一一对应
vector<int> constructArr(vector<int>& a) {
int len = a.size();
if(len < 1) return a;
vector<int> ans(len, 0);
ans[0] = 1;
for(int i = 1; i < len; i++) {
ans[i] = ans[i - 1] * a[i - 1];
}
int temp = 1;
for(int i = len - 2; i >= 0; i--) {
temp *= a[i + 1];
ans[i] *= temp;
}
return ans;
}
};
剑指 Offer 66. 构建乘积数组
最新推荐文章于 2020-09-19 22:01:29 发布