目录
724. 寻找数组的中心下标
解析
题解
class Solution {
public:
int pivotIndex(vector<int>& nums) {
// 028_专题四_前缀和_寻找数组的中心下标_C++
int n = nums.size();
vector<int> f(n); // 前缀
vector<int> g(n); // 后缀
// 1.预处理前缀后缀和数组
for (int i = 1; i < n; ++i) f[i] = f[i - 1] + nums[i - 1];
for (int j = n - 2; j >= 0; --j) g[j] = g[j + 1] + nums[j+1];
// 2.使用数组
for (int i = 0; i < n; ++i)
if (f[i] == g[i])
return i;
return -1;
}
};
238. 除自身以外数组的乘积
解析
题解
class Solution {
public:
vector<int> productExceptSelf(vector<int>& nums) {
// 029_专题四_前缀和_除自身以外数组的乘积_C++
int n = nums.size();
vector<int> f(n), g(n); // 前缀 后缀
f[0] = 1, g[n - 1] = 1; // 预处理
// 1.预处理前缀和后缀数组
for (int i = 1; i < n; ++i) f[i] = f[i - 1] * nums[i - 1];
for (int i = n - 2; i >= 0; --i) g[i] = g[i + 1] * nums[i + 1];
// 2.使用数组
vector<int> ret;
for (int i = 0; i < n; ++i)
ret.push_back(f[i] * g[i]);
return ret;
}
};