C++ Program to Find if there is any subarray with sum equal to 0
Subarray with sum equal to Zero in C++
Here, in this page we will discuss the program to find if there is any subarray with sum equal to zero in C++ programming language. If such subarray is present then print true otherwise print false.
Method Discussed :
- Method 1 : Naive Approach
- Method 2 : Using Hashing
Method 1 :
- Run a outer loop for index 0 to n.
- Run a nested loop from index i+1 to n,
- Find sum, if it is equal to 0, then print true.
- Otherwise, print false.
Time and Space Complexity
- Time Complexity : O(n2)
- Space Complexity : O(1)
Run
#include<bits/stdc++.h>
using namespace std;
int main(){
int arr[] = {-3, 2, 3, 1, 6};
int n = sizeof(arr)/sizeof(arr[0]);
int flag = 0, sum;
for(int i=0; i<n; i++){
for(int j=i; j<n; j++){
sum += arr[j];
if(sum==0){
flag =1;
break;
}
}
}
if(flag==1)
cout<<"true";
else cout<<"false";
}Output
false
Method 2 :
- Iterate through the array and for every element arr[i],
- Calculate the sum of elements from 0 to i.
- If the current sum has been seen before, then there is a zero-sum array.
- Hashing is used to store the sum values so that we can quickly store sum.
- Check out whether the current sum is seen before or not.
Time and Space Complexity
- Time Complexity : O(n2)
- Space Complexity : O(1)
Run
#include<bits/stdc++.h>
using namespace std;
int main(){
int arr[] = {-3, 2, 3, 1, 6};
int n = sizeof(arr)/sizeof(arr[0]);
int flag = 0, sum = 0;
set<int>st;
for(int i=0; i<n; i++){
sum += arr[i];
if (sum == 0 || st.find(sum) != st.end()){
flag=1;
break;
}
st.insert(sum);
}
if(flag==1)
cout<<"true";
else cout<<"false";
}Output
false
Prime Course Trailer
Related Banners
Get PrepInsta Prime & get Access to all 200+ courses offered by PrepInsta in One Subscription

Login/Signup to comment