Given an array arr[] of N integers, the task is to find the sum of all elements between two zeros in the given array. If possible, then print all the sum, else print “-1”.
Note: There is no continuous zero in the given array.
Examples:
Input: arr[] = { 1, 0, 3, 4, 0, 4, 4, 0, 2, 1, 4, 0, 3 }
Output: 7 8 7
Explanation:
The sum of elements between every zero are:
3 + 4 = 7
4 + 4 = 8
2 + 1 + 4 = 7Input: arr[] = { 1, 3, 4, 6, 0}
Output: -1
Approach:
- Traverse the given array arr[] and find the first index with element 0.
- If any element with the value zero occurs, then start storing the sum of elements after it in a vector(say A[]) until the next zero occurs.
- Repeat the above steps for every zero that occurs.
- Print the elements stored in A[].
Below is the implementation of the above approach:
C++
// C++ program for the above approach#include "bits/stdc++.h"using namespace std;// Function to find the sum between two// zeros in the given array arr[]void sumBetweenZero(int arr[], int N){ int i = 0; // To store the sum of element // between two zeros vector<int> A; // To store the sum int sum = 0; // Find first index of 0 for (i = 0; i < N; i++) { if (arr[i] == 0) { i++; break; } } // Traverse the given array arr[] for (; i < N; i++) { // If 0 occurs then add it to A[] if (arr[i] == 0) { A.push_back(sum); sum = 0; } // Else add element to the sum else { sum += arr[i]; } } // Print all the sum stored in A for (int i = 0; i < A.size(); i++) { cout << A[i] << ' '; } // If there is no such element print -1 if (A.size() == 0) cout << "-1";}// Driver Codeint main(){ int arr[] = { 1, 0, 3, 4, 0, 4, 4, 0, 2, 1, 4, 0, 3 }; int N = sizeof(arr) / sizeof(arr[0]); // Function call sumBetweenZero(arr, N); return 0;} |
Java
// Java program for the above approachimport java.util.*;class GFG{// Function to find the sum between two// zeros in the given array arr[]static void sumBetweenZero(int arr[], int N){ int i = 0; // To store the sum of element // between two zeros Vector<Integer> A = new Vector<Integer>(); // To store the sum int sum = 0; // Find first index of 0 for(i = 0; i < N; i++) { if (arr[i] == 0) { i++; break; } } // Traverse the given array arr[] for(; i < N; i++) { // If 0 occurs then add it to A[] if (arr[i] == 0) { A.add(sum); sum = 0; } // Else add element to the sum else { sum += arr[i]; } } // Print all the sum stored in A for(int j = 0; j < A.size(); j++) { System.out.print(A.get(j) + " "); } // If there is no such element print -1 if (A.size() == 0) System.out.print("-1");}// Driver Codepublic static void main(String[] args){ int arr[] = { 1, 0, 3, 4, 0, 4, 4, 0, 2, 1, 4, 0, 3 }; int N = arr.length; // Function call sumBetweenZero(arr, N);}}// This code is contributed by gauravrajput1 |
Python3
#Python3 program for the above approach# Function to find the sum between two# zeros in the given array arr[]def sumBetweenZero(arr, N): i = 0 # To store the sum of the element # between two zeros A = [] # To store the sum sum = 0 # Find first index of 0 for i in range(N): if (arr[i] == 0): i += 1 break k = i # Traverse the given array arr[] for i in range(k, N, 1): # If 0 occurs then add it to A[] if (arr[i] == 0): A.append(sum) sum = 0 # Else add element to the sum else: sum += arr[i] # Print all the sum stored in A for i in range(len(A)): print(A[i], end = ' ') # If there is no such element print -1 if (len(A) == 0): print("-1")# Driver Codeif __name__ == '__main__': arr = [ 1, 0, 3, 4, 0, 4, 4, 0, 2, 1, 4, 0, 3 ] N = len(arr) # Function call sumBetweenZero(arr, N)# This code is contributed by Bhupendra_Singh |
C#
// C# program for the above approachusing System;using System.Collections.Generic;class GFG{// Function to find the sum between two// zeros in the given array []arrstatic void sumBetweenZero(int []arr, int N){ int i = 0; // To store the sum of element // between two zeros List<int> A = new List<int>(); // To store the sum int sum = 0; // Find first index of 0 for(i = 0; i < N; i++) { if (arr[i] == 0) { i++; break; } } // Traverse the given array []arr for(; i < N; i++) { // If 0 occurs then add it to []A if (arr[i] == 0) { A.Add(sum); sum = 0; } // Else add element to the sum else { sum += arr[i]; } } // Print all the sum stored in A for(int j = 0; j < A.Count; j++) { Console.Write(A[j] + " "); } // If there is no such element print -1 if (A.Count == 0) Console.Write("-1");}// Driver Codepublic static void Main(String[] args){ int []arr = { 1, 0, 3, 4, 0, 4, 4, 0, 2, 1, 4, 0, 3 }; int N = arr.Length; // Function call sumBetweenZero(arr, N);}}// This code is contributed by gauravrajput1 |
Javascript
<script>// Javascript program for the above approach// Function to find the sum between two// zeros in the given array arr[]function sumBetweenZero(arr, N) { let i = 0; // To store the sum of element // between two zeros let A = new Array(); // To store the sum let sum = 0; // Find first index of 0 for (i = 0; i < N; i++) { if (arr[i] == 0) { i++; break; } } // Traverse the given array arr[] for (; i < N; i++) { // If 0 occurs then add it to A[] if (arr[i] == 0) { A.push(sum); sum = 0; } // Else add element to the sum else { sum += arr[i]; } } // Print all the sum stored in A for (let i = 0; i < A.length; i++) { document.write(A[i] + ' '); } // If there is no such element print -1 if (A.length == 0) document.write("-1");}// Driver Codelet arr = [1, 0, 3, 4, 0, 4, 4, 0, 2, 1, 4, 0, 3];let N = arr.length;// Function callsumBetweenZero(arr, N);// This code is contributed by _saurabh_jaiswal</script> |
7 8 7
Time Complexity: O(N), where N is the length of the array.
Space Complexity: O(N) as ans vector has been created.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

… [Trackback]
[…] Find More Information here on that Topic: geeksforgeeks.org/sum-of-all-elements-in-an-array-between-zeros/ […]
… [Trackback]
[…] Here you will find 28702 more Information to that Topic: geeksforgeeks.org/sum-of-all-elements-in-an-array-between-zeros/ […]