Coding Problem 1 : Picking Numbers [HackerRank - Problem Solving]

Problem : Picking Numbers

[https://www.hackerrank.com/challenges/picking-numbers/problem]

Given an array of integers, find the longest subarray where the absolute difference between any two elements is less than or equal to .

Example

There are two subarrays meeting the criterion:  and . The maximum length subarray has  elements.

Function Description

Complete the pickingNumbers function in the editor below.

pickingNumbers has the following parameter(s):

  • int a[n]: an array of integers

Returns

  • int: the length of the longest subarray that meets the criterion

Input Format

The first line contains a single integer , the size of the array .
The second line contains  space-separated integers, each an .

Constraints

  • The answer will be .

Sample Input 0

6
4 6 5 3 3 1

Sample Output 0

3

Explanation 0

We choose the following multiset of integers from the array: . Each pair in the multiset has an absolute difference  (i.e.,  and ), so we print the number of chosen integers, , as our answer.

Sample Input 1

6
1 2 2 3 1 2

Sample Output 1

5

Explanation 1

We choose the following multiset of integers from the array: . Each pair in the multiset has an absolute difference  (i.e., , and ), so we print the number of chosen integers, , as our answer.


Solution : 



package com.coding.problems.hackerrank;

import java.io.*;
import java.util.List;
import java.util.stream.Stream;

import static java.util.stream.Collectors.toList;

class Result {

/*
* Complete the 'pickingNumbers' function below.
*
* The function is expected to return an INTEGER.
* The function accepts INTEGER_ARRAY a as parameter.
*
*/

public static int pickingNumbers(List<Integer> a) {
// Write your code here
int[] frequency = new int[101];
int result = Integer.MIN_VALUE;
for(int i=0; i<a.size();i++){
int value = a.get(i);
frequency[value] = frequency[value]+1;
}
for(int j=1;j<=100;j++){
result = Math.max(result, frequency[j] + frequency[j-1]);
}

return result;
}

}

public class PickingNumbers {
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
//BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));

int n = Integer.parseInt(bufferedReader.readLine().trim());

List<Integer> a = Stream.of(bufferedReader.readLine().replaceAll("\\s+$", "").split(" "))
.map(Integer::parseInt)
.collect(toList());

int result = Result.pickingNumbers(a);
System.out.println(result);
//bufferedWriter.write(String.valueOf(result));
//bufferedWriter.newLine();

bufferedReader.close();
//bufferedWriter.close();
}
}

Comments

Popular posts from this blog

Primitive Data Types in java

let - Keyword in JavaScript (Block scope)

Coding Problem 4: Smallest window containing 0, 1 and 2 [GFG - Problem Solving]