-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path523-continuous-subarray-sum.cpp
More file actions
53 lines (53 loc) · 1.35 KB
/
Copy path523-continuous-subarray-sum.cpp
File metadata and controls
53 lines (53 loc) · 1.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
class Solution {
public:
bool checkSubarraySum(vector<int>& nums, int k) {
if (k == 0)
{
set<int> _pre_sum;
int pre_sum = 0;
int pre = -1;
for (auto x : nums)
{
if (x == 0)
{
if (pre == 0)
{
return true;
}
pre = x;
continue;
}
pre_sum += x;
if (_pre_sum.find(pre_sum) != _pre_sum.end()) return true;
_pre_sum.insert(pre_sum);
pre = x;
}
return false;
}
k = abs(k);
set<int> isUsed;
int pre_sum = 0;
int pre = -1;
bool flag = false;
for (auto x : nums)
{
if (x % k == 0)
{
if (flag && pre % k== 0)
{
return true;
}
flag = true;
pre = x;
continue;
}
pre_sum = (pre_sum + x) % k;
if (pre_sum == 0) return true;
if (isUsed.find(pre_sum) != isUsed.end()) return true;
isUsed.insert(pre_sum);
pre = x;
flag = true;
}
return false;
}
};