In this HackerRank Java Subarray problem in the java programming language 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 integers, find and print its number of negative subarrays on a new line.
HackerRank java subarray problem solution.
import java.io.*; import java.util.*; import java.text.*; import java.math.*; import java.util.regex.*; 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. */ Scanner sc=new Scanner(System.in); int n=sc.nextInt(); int[] array1= new int[n]; for(int i=0;i<n;i++){ array1[i]=sc.nextInt(); } int count=0; for(int j=0;j<n;j++){ int sum=0; for(int k=j;k<n;k++){ sum=array1[k]+sum; if(sum<0){ count++; } } } System.out.println(count); } }
Second solution
import java.io.*; import java.util.*; import java.text.*; import java.math.*; import java.util.regex.*; 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. */ Scanner sc = new Scanner(System.in); int range = sc.nextInt(); int[] numbers = new int[range]; HashMap<Integer, Integer> h = new HashMap<>(); for (int i = 0; i < numbers.length; i++) { numbers[i] = sc.nextInt(); } int counter = 0; for (int i = 0; i < numbers.length; i++){ for (int j = i; j < numbers.length; j++){ int sum = 0; for (int k = i; k <= j; k = k + 1){ sum = sum + numbers[k]; } if (sum < 0){ counter = counter + 1; } } } System.out.println(counter); } }
The solution in Java 8 programming.
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. */ Scanner sc = new Scanner(System.in); int n = Integer.parseInt(sc.nextLine()); int [] numbers = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray(); int negCount = 0; for(int i = 0; i < n; i++){ for(int j = i; j < n; j++){ int subArr[] = null; /*if(i == j){ subArr = new int[1]; subArr[0] = numbers[i]; } else *///if(i <= j) subArr = Arrays.copyOfRange(numbers, i, j+1); //System.err.println(Arrays.toString(subArr)); int sum = sumArray(subArr); //System.err.println("Sum = "+sum); if(sum < 0){ negCount++; //System.err.println("Range = ["+i+":"+j+"]"); } } } System.out.println(negCount); sc.close(); } public static int sumArray(int [] arr){ int sum = 0; if(arr != null){ for(int i = 0; i < arr.length; i++){ sum+=arr[i]; } } return sum; } }
0 Comments