
class Solution {
public:
bool findSubarrays(vector<int>& nums) {
int nums_length = nums.size();
if(nums_length < 3) return false;
for(int counts_slow = 0; counts_slow < nums_length-1; counts_slow++)
{
int sum1 = nums[counts_slow] + nums[counts_slow+1];
for(int fast_counts = counts_slow+1; fast_counts < nums_length-1; fast_counts++)
{
int sum2 = nums[fast_counts] + nums[fast_counts+1];
if(sum1 == sum2) return true;
}
}
return false;
}
};
思想:因为是两个连续的子数组,所以先计算一个数组和,而后计算下一个子数组和比较,不符合则计算计算下下一个数组和,依次遍历,符合则返回。
官方解法
class Solution {
public:
bool findSubarrays(vector<int>& nums) {
int n = nums.size();
unordered_set<int> seen;
for (int i = 0; i < n - 1; ++i) {
int sum = nums[i] + nums[i + 1];
if (seen.count(sum)) {
return true;
}
seen.insert(sum);
}
return false;
}
};
链接:https://leetcode.cn/problems/find-subarrays-with-equal-sum/solution/he-xiang-deng-de-zi-shu-zu-by-leetcode-s-3945/
来源:力扣(LeetCode)
思路:哈希表search,补哈希表知识下节。

文章提供了两种方法解决LeetCode上的一个问题:找到数组中和相等的连续子数组。第一种方法是通过双重循环,对比相邻子数组的和。第二种方法利用哈希表,将前一个子数组的和插入集合,如果当前子数组和在集合中出现过,则返回true。
1245

被折叠的 条评论
为什么被折叠?



