和相等的子数组【LC2395】
给你一个下标从 0 开始的整数数组
nums
,判断是否存在 两个 长度为2
的子数组且它们的 和 相等。注意,这两个子数组起始位置的下标必须 不相同 。如果这样的子数组存在,请返回
true
,否则返回false
。子数组 是一个数组中一段连续非空的元素组成的序列。
- 思路:
使用哈希表存储长度为2的子数组之和,当出现在哈希表中的元素时,返回true,反之返回false - 实现
class Solution { public boolean findSubarrays(int[] nums) { Set<Integer> set = new HashSet<>(); for (int i = 0; i < nums.length - 1; i++){ if (!set.add(nums[i] + nums[i+1])){ return true; } } return false; } }
复杂度
- 时间复杂度:O(n)
- 空间复杂度:O(n)