Skip to content

Commit 5b9e753

Browse files
committed
feat: update solutions to lc problem: No.2395
No.2395.Find Subarrays With Equal Sum
1 parent dffba15 commit 5b9e753

File tree

7 files changed

+59
-56
lines changed

7 files changed

+59
-56
lines changed

solution/2300-2399/2395.Find Subarrays With Equal Sum/README.md

+21-20
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,11 @@
5151

5252
**方法一:哈希表**
5353

54-
用哈希表 `s` 记录数组相邻两元素的和
54+
我们可以遍历数组 $nums$,用哈希表 $vis$ 记录数组中每两个相邻元素的和,如果当前两个元素的和已经在哈希表中出现过,则返回 `true`,否则将当前两个元素的和加入哈希表中
5555

56-
遍历数组 `nums`,若 `s` 中存在 `nums[i] + nums[i + 1]`,则返回 `true`;否则将 `nums[i] + nums[i + 1]` 加入 `s`
56+
遍历结束后,说明没有找到满足条件的两个子数组,返回 `false`
5757

58-
时间复杂度 $O(n)$,空间复杂度 $O(n)$其中 $n$ 为数组 `nums` 的长度。
58+
时间复杂度 $O(n)$,空间复杂度 $O(n)$其中 $n$ 为数组 $nums$ 的长度。
5959

6060
<!-- tabs:start -->
6161

@@ -66,11 +66,11 @@
6666
```python
6767
class Solution:
6868
def findSubarrays(self, nums: List[int]) -> bool:
69-
s = set()
69+
vis = set()
7070
for a, b in pairwise(nums):
71-
if (v := a + b) in s:
71+
if (x := a + b) in vis:
7272
return True
73-
s.add(v)
73+
vis.add(x)
7474
return False
7575
```
7676

@@ -81,10 +81,9 @@ class Solution:
8181
```java
8282
class Solution {
8383
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])) {
8887
return true;
8988
}
9089
}
@@ -99,11 +98,13 @@ class Solution {
9998
class Solution {
10099
public:
101100
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);
107108
}
108109
return false;
109110
}
@@ -114,13 +115,13 @@ public:
114115
115116
```go
116117
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] {
121122
return true
122123
}
123-
s[v] = true
124+
vis[x] = true
124125
}
125126
return false
126127
}

solution/2300-2399/2395.Find Subarrays With Equal Sum/README_EN.md

+18-17
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,11 @@ Note that even though the subarrays have the same content, the two subarrays are
5353
```python
5454
class Solution:
5555
def findSubarrays(self, nums: List[int]) -> bool:
56-
s = set()
56+
vis = set()
5757
for a, b in pairwise(nums):
58-
if (v := a + b) in s:
58+
if (x := a + b) in vis:
5959
return True
60-
s.add(v)
60+
vis.add(x)
6161
return False
6262
```
6363

@@ -66,10 +66,9 @@ class Solution:
6666
```java
6767
class Solution {
6868
public boolean findSubarrays(int[] nums) {
69-
Set<Integer> s = new HashSet<>();
70-
for (int i = 0; i < nums.length - 1; ++i) {
71-
int v = nums[i] + nums[i + 1];
72-
if (!s.add(v)) {
69+
Set<Integer> vis = new HashSet<>();
70+
for (int i = 1; i < nums.length; ++i) {
71+
if (!vis.add(nums[i - 1] + nums[i])) {
7372
return true;
7473
}
7574
}
@@ -84,11 +83,13 @@ class Solution {
8483
class Solution {
8584
public:
8685
bool findSubarrays(vector<int>& nums) {
87-
unordered_set<int> s;
88-
for (int i = 0; i < nums.size() - 1; ++i) {
89-
int v = nums[i] + nums[i + 1];
90-
if (s.count(v)) return true;
91-
s.insert(v);
86+
unordered_set<int> vis;
87+
for (int i = 1; i < nums.size(); ++i) {
88+
int x = nums[i - 1] + nums[i];
89+
if (vis.count(x)) {
90+
return true;
91+
}
92+
vis.insert(x);
9293
}
9394
return false;
9495
}
@@ -99,13 +100,13 @@ public:
99100
100101
```go
101102
func findSubarrays(nums []int) bool {
102-
s := map[int]bool{}
103-
for i := 0; i < len(nums)-1; i++ {
104-
v := nums[i] + nums[i+1]
105-
if s[v] {
103+
vis := map[int]bool{}
104+
for i, b := range nums[1:] {
105+
x := nums[i] + b
106+
if vis[x] {
106107
return true
107108
}
108-
s[v] = true
109+
vis[x] = true
109110
}
110111
return false
111112
}

solution/2300-2399/2395.Find Subarrays With Equal Sum/Solution.cpp

+7-5
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
class Solution {
22
public:
33
bool findSubarrays(vector<int>& nums) {
4-
unordered_set<int> s;
5-
for (int i = 0; i < nums.size() - 1; ++i) {
6-
int v = nums[i] + nums[i + 1];
7-
if (s.count(v)) return true;
8-
s.insert(v);
4+
unordered_set<int> vis;
5+
for (int i = 1; i < nums.size(); ++i) {
6+
int x = nums[i - 1] + nums[i];
7+
if (vis.count(x)) {
8+
return true;
9+
}
10+
vis.insert(x);
911
}
1012
return false;
1113
}
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
func findSubarrays(nums []int) bool {
2-
s := map[int]bool{}
3-
for i := 0; i < len(nums)-1; i++ {
4-
v := nums[i] + nums[i+1]
5-
if s[v] {
2+
vis := map[int]bool{}
3+
for i, b := range nums[1:] {
4+
x := nums[i] + b
5+
if vis[x] {
66
return true
77
}
8-
s[v] = true
8+
vis[x] = true
99
}
1010
return false
1111
}

solution/2300-2399/2395.Find Subarrays With Equal Sum/Solution.java

+3-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
class Solution {
22
public boolean findSubarrays(int[] nums) {
3-
Set<Integer> s = new HashSet<>();
4-
for (int i = 0; i < nums.length - 1; ++i) {
5-
int v = nums[i] + nums[i + 1];
6-
if (!s.add(v)) {
3+
Set<Integer> vis = new HashSet<>();
4+
for (int i = 1; i < nums.length; ++i) {
5+
if (!vis.add(nums[i - 1] + nums[i])) {
76
return true;
87
}
98
}
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
class Solution:
22
def findSubarrays(self, nums: List[int]) -> bool:
3-
s = set()
3+
vis = set()
44
for a, b in pairwise(nums):
5-
if (v := a + b) in s:
5+
if (x := a + b) in vis:
66
return True
7-
s.add(v)
7+
vis.add(x)
88
return False

solution/2300-2399/2396.Strictly Palindromic Number/README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,9 @@
5050

5151
当 $n \gt 4$ 时,此时 $n-2$ 的二进制表示为 $12$,不是回文串。
5252

53-
因此,直接返回 `false`
53+
因此,我们直接返回 `false` 即可
5454

55-
时间复杂度 $O(1)$。
55+
时间复杂度 $O(1)$,空间复杂度 $O(1)$
5656

5757
<!-- tabs:start -->
5858

0 commit comments

Comments
 (0)