Hackerrank - Migratory Birds

Given an array of bird sightings where every element represents a bird type id, determine the id of the most frequently sighted type. If more than 1 type has been spotted that maximum amount, return the smallest of their ids.

Example

There are two each of types and , and one sighting of type . Pick the lower of the two types seen twice: type

.

Function Description

Complete the migratoryBirds function in the editor below.

migratoryBirds has the following parameter(s):

  • int arr[n]: the types of birds sighted

Returns

  • int: the lowest type id of the most frequently sighted birds

Input Format

The first line contains an integer,

, the size of .
The second line describes as

space-separated integers, each a type number of the bird sighted.

Constraints

It is guaranteed that each type is , , , , or
  • .

Sample Input 0

6
1 4 4 4 5 3

Sample Output 0

4

Explanation 0

The different types of birds occur in the following frequencies:

  • Type
:
  • bird
  • Type
  • :
  • birds
  • Type
  • :
  • bird
  • Type
  • :
  • birds
  • Type
  • :
    • bird

    The type number that occurs at the highest frequency is type

    , so we print

    as our answer.

    Sample Input 1

    11
    1 2 3 4 5 4 3 2 1 3 4
    

    Sample Output 1

    3
    

    Explanation 1

    The different types of birds occur in the following frequencies:

    • Type

    : Type : Type : Type : Type : Two types have a frequency of , and the lower of those is type .

    import java.io.*;
    import java.math.*;
    import java.security.*;
    import java.text.*;
    import java.util.*;
    import java.util.concurrent.*;
    import java.util.function.*;
    import java.util.regex.*;
    import java.util.stream.*;
    import static java.util.stream.Collectors.joining;
    import static java.util.stream.Collectors.toList;

    class Result {


    public static int migratoryBirds(List<Integer> arr) {
    List<Integer> countList = new ArrayList<>();
    Integer[] initialCount = {0,0,0,0,0};
    countList.addAll(Arrays.asList(initialCount));
    int maxCount = 0;
    for (int i = 0; i < arr.size(); i++) {
    int currentBirdCount = countList.get(arr.get(i)-1);
    countList.set(arr.get(i)-1, ++currentBirdCount);

    if(currentBirdCount > maxCount){
    maxCount = currentBirdCount;
    }

    }

    return countList.indexOf(maxCount)+1;
    }

    }

    class Solution {
    public static void main(String[] args) throws IOException {
    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
    BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(System.out));

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

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

    int result = Result.migratoryBirds(arr);

    bufferedWriter.write(String.valueOf(result));
    bufferedWriter.newLine();

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

     

    Comments

    Popular posts from this blog

    Hackerrank - Quicksort 2 - Sorting

    Hackerrank - Day of the Programmer

    Hackerrank - UNIQUE ARMSTRONG NUMBER