题目
给你一个下标从 0 开始的整数数组 nums ,判断是否存在 两个 长度为 2 的子数组且它们的 和 相等。注意,这两个子数组起始位置的下标必须 不相同 。
如果这样的子数组存在,请返回 true,否则返回 false 。
子数组是一个数组中一段连续非空的元素组成的序列。
分析
注意子数组是一个数组中一段连续非空的元素组成的序列。
所以穷举出所有的情况是很简单的,可以利用哈希表记录和出现的次数。
代码
class Solution {
public:
bool findSubarrays(vector<int>& nums) {
int n=nums.size();
unordered_set<int> res;
for(int i=0;i<n-1;i++){
int sum=nums[i]+nums[i+1];
if(res.count(sum)){
return true;
}
res.insert(sum);
}
return false;
}
};