Hello coders, today we are going to solve Java Subarray HackerRank Solution.
Problem
We define the following:
- A subarray of an n-element array is an array composed from a contiguous block of the original array’s elements. For example, if array = [1,2,3], then the subarrays are [1], [2], [3], [1,2], [2,3], and [1,2,3]. Something like [1,3]would not be a subarray as it’s not a contiguous subsection of the original array.
- The sum of an array is the total sum of its elements.
- An array’s sum is negative if the total sum of its elements is negative.
- An array’s sum is positive if the total sum of its elements is positive.
Given an array of n integers, find and print its number of negative subarrays on a new line.
Input Format
The first line contains a single integer, n, denoting the length of array A = [a0, a1, . . . , an-1].
The second line contains n space-separated integers describing each respective element, ai, in array A.
Constraints
- 1 ≤ n ≤ 100
- -104 ≤ ai ≤ 104
Output Format
Print the number of subarrays of A having negative sums.
Sample Input
5
1 -2 4 -5 1
Sample Output
9
Explanation
There are nine negative subarrays of A = [ 1, -2, 4, -5, 1]:
- [1:1] ⇒ -2
- [3:3] ⇒ -5
- [0:1] ⇒ 1 + -2 = -1
- [2:3] ⇒ 4 + -5 = -1
- [3:4] ⇒ -5 + 1 = -4
- [1:3] ⇒ -2 + 4 + -5 = -3
- [0:3] ⇒ 1 + -2 + 4 + -5 = -2
- [1:4] ⇒ -2 + 4 + -5 + 1 = -2
- [0:4] ⇒ 1 + -2 + 4 + -5 + 1 = -1
Thus, we print 9 on a new line.
Solution – Java Subarray
import java.io.*; import java.util.*; public class Solution { public static void main(String[] args) { /* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */ int n,sum=0,c=0; Scanner sc = new Scanner(System.in); n = sc.nextInt(); int[] a = new int[n]; for(int i=0;i<n;i++){ a[i] = sc.nextInt(); } for(int i=0;i<n;i++) { for(int j=i;j<n;j++) { sum = 0; for(int k=i;k<=j;k++) { sum+=a[k]; } if(sum<0)c++; } } System.out.print(c); } }
Disclaimer: The above Problem ( Java Subarray ) is generated by Hacker Rank but the Solution is Provided by CodingBroz. This tutorial is only for Educational and Learning Purpose.