May 14, 2019 Andrey

Migratory Birds problem from Hackerrank with Go

Problem url:
https://www.hackerrank.com/challenges/migratory-birds/problem

Solution:
Results are generated in O(1) while traversing an array. We need to keep track of the largest value and keep a record of the smallest key.

func migratoryBirds(arr []int32) int32 {
     //key value
     m := make(map[int32]int32)

    largest := int32(0)
    largestKey := int32(0) 

    for _, key := range arr {
        c := incrementKey(key, m)
        if (largest < c) {
            largest = c
            largestKey = key
            fmt.Println(largest, largestKey)
        } else if (largest == c) {
            //compare keys
            if (largestKey > key){
                largestKey = key
            }
        }
    }

     fmt.Println(largest)
     return largestKey
}

func incrementKey(k int32, m map[int32]int32) int32 {
    if _, ok := m[k]; ok {
        m[k] += 1
    } else {
        m[k] = 1
    }
    return m[k]
}
,