There are multiple ways to solve this problem. One could sort the arrays and check element by element if two consecutive items are equal.
Another approach is to use a list to store elements that has been processed and if indexOf(element) is not -1 then return true. I tried this but it’s slow.
My final solution uses hashmap to keep track of processed elements. This is definitely way faster particulary when the array size is huge.
class Solution {
fun containsDuplicate(nums: IntArray): Boolean {
val map = HashSet<Int>()
nums.forEach {
if(map.contains(it)) return true
map.add(it)
}
return false
}
}
Runtime: 228 ms, faster than 83.15% of Kotlin online submissions for Contains Duplicate.
Memory Usage: 38 MB, less than 100.00% of Kotlin online submissions for Contains Duplicate.