和相等的子数组【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)O(n)
- 空间复杂度:O(n)O(n)O(n)
- 复杂度

该问题要求判断给定数组中是否存在两个不同的长度为2的子数组,其和相等。解决方案是使用哈希表存储每个子数组的和,如果在遍历过程中遇到已存在于哈希表中的和,则返回true,否则继续遍历。算法的时间和空间复杂度皆为O(n)。

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



