-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathTopKFrequentElements347.kt
51 lines (39 loc) · 1.01 KB
/
TopKFrequentElements347.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package medium
/**
* Given an integer array nums and an integer k, return the k most frequent elements. You may return the answer in any order.
Example 1:
Input: nums = [1,1,1,2,2,3], k = 2
Output: [1,2]
Example 2:
Input: nums = [1], k = 1
Output: [1]
Constraints:
1 <= nums.length <= 105
k is in the range [1, the number of unique elements in the array].
It is guaranteed that the answer is unique.
Follow up: Your algorithm's time complexity must be better than O(n log n), where n is the array's size.
*/
fun topKFrequent(nums: IntArray, k: Int): IntArray {
val map=HashMap<Int,Int>()
nums.forEach{num->
map[num]=(map[num]?:0)+1
}
var i=0
val result=IntArray(k)
while(i<k)
{
var maxValue=0
var maxKey=0
map.forEach{pair->
if(pair.value>maxValue)
{
maxValue=pair.value
maxKey=pair.key
}
}
result[i]=maxKey
map.remove(maxKey)
i++
}
return result
}