1. 题目解析
题目链接:724. 寻找数组的中心下标
这个问题的理解其实相当简单,只需看一下示例,基本就能明白其含义了。
核心在于计算题目所给数组是否存在某一个元素左边的和等于右边的和,存在返回那个元素下标即可,不存在返回-1即可。
2.算法原理
这里看见连续数组的和,不言而喻的我们首先想到前缀和的思想。
我们把中心下标左边元素的和叫做“前缀和”,把该元素右边的元素的和叫做“后缀和”
- 要保存前缀和和后缀和,我们当然要先开辟出两个数组出来存放
- 为了找到可能的中心下标,我们用for循环遍历题目所给数组,判断前缀和和后缀和是否相等即可
3.代码编写
class Solution {
public:
int pivotIndex(vector<int>& nums) {
int n = nums.size();
vector<int> f(n), g(n);
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];
for(int i = 0; i < n; i++)
if(f[i] == g[i])
return i;
return -1;
}
};
The Last
嗯,就是这样啦,文章到这里就结束啦,真心感谢你花时间来读。
觉得有点收获的话,不妨给我点个赞吧!
如果发现文章有啥漏洞或错误的地方,欢迎私信我或者在评论里提醒一声~