fork download
  1. #include<iostream>
  2. #include<unordered_map>
  3. using namespace std;
  4. int longestSubarrayWithSumZero(int arr[],int n,int k){
  5. unordered_map<int,int>m;
  6. int pre = 0;
  7. int len = 0;
  8. for(int i=0;i<n;i++){
  9. pre+=arr[i];
  10. if(pre == k){
  11. len = max(len,i+1);
  12. }
  13. if(m.find(pre-k)!= m.end()){
  14. len = max(len,(i-m[pre-k]));
  15. }
  16. else{
  17. m[pre]= i;
  18. }
  19. }
  20. return len;
  21. }
  22. int main(){
  23. int arr[] = {1,-1,5,-2,3};
  24. int n = sizeof(arr)/sizeof(int);
  25. int k = 3;
  26. int ans = longestSubarrayWithSumZero(arr,n,k);
  27. cout<<ans;
  28. return 0;}
  29.  
  30.  
  31.  
Success #stdin #stdout 0s 4188KB
stdin
Standard input is empty
stdout
4