LeetCode in Kotlin

3289. The Two Sneaky Numbers of Digitville

Easy

In the town of Digitville, there was a list of numbers called nums containing integers from 0 to n - 1. Each number was supposed to appear exactly once in the list, however, two mischievous numbers sneaked in an additional time, making the list longer than usual.

As the town detective, your task is to find these two sneaky numbers. Return an array of size two containing the two numbers (in any order), so peace can return to Digitville.

Example 1:

Input: nums = [0,1,1,0]

Output: [0,1]

Explanation:

The numbers 0 and 1 each appear twice in the array.

Example 2:

Input: nums = [0,3,2,1,3,2]

Output: [2,3]

Explanation:

The numbers 2 and 3 each appear twice in the array.

Example 3:

Input: nums = [7,1,5,4,3,4,6,0,9,5,8,2]

Output: [4,5]

Explanation:

The numbers 4 and 5 each appear twice in the array.

Constraints:

Solution

import java.util.HashMap

class Solution {
    fun getSneakyNumbers(nums: IntArray): IntArray {
        val countMap: MutableMap<Int, Int> = HashMap<Int, Int>()
        // Populate the HashMap with the frequency of each number
        for (num in nums) {
            countMap.put(num, countMap.getOrDefault(num, 0) + 1)
        }
        // Array to store the result
        val result = IntArray(2)
        var index = 0
        // Find the numbers that appear exactly twice
        for (entry in countMap.entries) {
            if (entry.value == 2) {
                result[index++] = entry.key
                // Break if we have found both sneaky numbers
                if (index == 2) {
                    break
                }
            }
        }
        return result
    }
}