51
51
52
52
** 方法一:哈希表**
53
53
54
- 用哈希表 ` s ` 记录数组相邻两元素的和 。
54
+ 我们可以遍历数组 $nums$, 用哈希表 $vis$ 记录数组中每两个相邻元素的和,如果当前两个元素的和已经在哈希表中出现过,则返回 ` true ` ,否则将当前两个元素的和加入哈希表中 。
55
55
56
- 遍历数组 ` nums ` ,若 ` s ` 中存在 ` nums[i] + nums[i + 1] ` ,则返回 ` true ` ;否则将 ` nums[i] + nums[i + 1] ` 加入 ` s ` 中 。
56
+ 遍历结束后,说明没有找到满足条件的两个子数组,返回 ` false ` 。
57
57
58
- 时间复杂度 $O(n)$,空间复杂度 $O(n)$, 其中 $n$ 为数组 ` nums ` 的长度。
58
+ 时间复杂度 $O(n)$,空间复杂度 $O(n)$。 其中 $n$ 为数组 $ nums$ 的长度。
59
59
60
60
<!-- tabs:start -->
61
61
66
66
``` python
67
67
class Solution :
68
68
def findSubarrays (self , nums : List[int ]) -> bool :
69
- s = set ()
69
+ vis = set ()
70
70
for a, b in pairwise(nums):
71
- if (v := a + b) in s :
71
+ if (x := a + b) in vis :
72
72
return True
73
- s .add(v )
73
+ vis .add(x )
74
74
return False
75
75
```
76
76
@@ -81,10 +81,9 @@ class Solution:
81
81
``` java
82
82
class Solution {
83
83
public boolean findSubarrays (int [] nums ) {
84
- Set<Integer > s = new HashSet<> ();
85
- for (int i = 0 ; i < nums. length - 1 ; ++ i) {
86
- int v = nums[i] + nums[i + 1 ];
87
- if (! s. add(v)) {
84
+ Set<Integer > vis = new HashSet<> ();
85
+ for (int i = 1 ; i < nums. length; ++ i) {
86
+ if (! vis. add(nums[i - 1 ] + nums[i])) {
88
87
return true ;
89
88
}
90
89
}
@@ -99,11 +98,13 @@ class Solution {
99
98
class Solution {
100
99
public:
101
100
bool findSubarrays(vector<int >& nums) {
102
- unordered_set<int > s;
103
- for (int i = 0; i < nums.size() - 1; ++i) {
104
- int v = nums[ i] + nums[ i + 1] ;
105
- if (s.count(v)) return true;
106
- s.insert(v);
101
+ unordered_set<int > vis;
102
+ for (int i = 1; i < nums.size(); ++i) {
103
+ int x = nums[ i - 1] + nums[ i] ;
104
+ if (vis.count(x)) {
105
+ return true;
106
+ }
107
+ vis.insert(x);
107
108
}
108
109
return false;
109
110
}
@@ -114,13 +115,13 @@ public:
114
115
115
116
```go
116
117
func findSubarrays(nums []int) bool {
117
- s := map[int]bool{}
118
- for i := 0; i < len( nums)-1; i++ {
119
- v := nums[i] + nums[i+1]
120
- if s[v ] {
118
+ vis := map[int]bool{}
119
+ for i, b := range nums[1:] {
120
+ x := nums[i] + b
121
+ if vis[x ] {
121
122
return true
122
123
}
123
- s[v ] = true
124
+ vis[x ] = true
124
125
}
125
126
return false
126
127
}
0 commit comments