정수 숫자 배열이 주어졌을 때 가장 많이 포함된 정수를 반환하면 된다. 이때 배열의 절반 길이 보다 많이 있으면 가장 많이 포함된 정수이며 해당 정수는 항상 배열의 절반 길이 보다 많이 있다.
Map을 사용해서 배열을 순차적으로 탐색하며 정수의 개수를 증가시키면 된다. 다만, 중간에 최적화를 할 수 있는데 배열의 절반 길이보다 많아진 정수가 있으면 바로 반환하면 된다.
class Solution {
fun majorityElement(nums: IntArray): Int {
HashMap<Int, Int>().also { map ->
nums.forEach { num ->
map.merge(num, 1, Int::plus)
if ((map[num] ?: 0) > nums.size / 2) return num
}
}
throw RuntimeException("Should not reach here")
}
}