# #15 Zero Sum Subarray
###### tags:`Array` `Medium`
## Zero Sum Subarray
You're given a list of integers `nums`. Write a function that returns a boolean representing whether there exists a zero-sum subarray of `nums`.
A zero-sum subarray is any subarray where all of the values add up to zero. A subarray is any contiguous section of the array. For the purposes of this problem, a subarray can be as small as one element and as long as the original array.
## Sample Input
```js
nums = [-5, -5, 2, 3, -2]
```
## Sample Output
```js
True // The subarray [-5, 2, 3] has a sum of 0
```
<br>
:::spoiler **Optimal Space & Time Complexity**
```
O(n) time | O(n) space - where n is the length of nums
```
:::
<br>
<hr/>
## Solutions
### Official Solution 1
```javascript=
// O(n) time | O(n) space - where n is the length of nums
function zeroSumSubarray(nums) {
const sums = new Set([0]);
let currentSum = 0;
for (const num of nums) {
currentSum += num;
if (sums.has(currentSum)) return true;
sums.add(currentSum);
}
return false;
}
```
<br>
---
### Everyone's
Everyone's content is basically the same.
:::spoiler Hao
```javascript=
/**
* Time complexity is O(n) which n is nums.length
* Space complexity is O(n) which n is nums.length
*/
function zeroSumSubarray(nums) {
let runningSum = 0;
const sums = new Set([runningSum]);
for (let num of nums) {
runningSum += num;
if (sums.has(runningSum)) return true;
sums.add(runningSum);
}
return false;
}
```
:::
<br>
:::spoiler 月
```javascript=
/* Time: O(n) -> Iteration
Space: O(n) -> new set
n is the length of nums.
*/
function zeroSumSubarray(nums) {
let sum = 0;
const set = new Set();
for(const num of nums){
sum += num;
if (set.has(sum) || sum === 0) {
return true;
}
set.add(sum);
}
return false;
}
```
:::
<br>
:::spoiler YC
```javascript=
function zeroSumSubarray(nums) {
const sumSet = new Set([0]);
let currSum = 0;
for(let i = 0; i < nums.length; i++){
currSum += nums[i];
if(sumSet.has(currSum)) {
return true;
}
sumSet.add(currSum)
}
return false
}
```
:::
<br>
#### backlog
:::spoiler 東
```javascript=
```
:::
<br>
---
## Supplement / Discussion
- A + 0 = A