Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // MARK: - 347. Top K Frequent Elements
- // Решение
- // Нужно создать массив, где индексами будет частота встречания, а значением - массив элементов которые встретились таковое число раз
- func topKFrequent(_ nums: [Int], _ k: Int) -> [Int] {
- var count = [Int:Int]()
- for num in nums {
- count[num, default: 0] += 1
- }
- // должнен создавать на 1 больше, так ка первый элемент массива - 0
- var arrayCount: [[Int]] = Array(repeating: [], count: nums.count + 1)
- for (num, index) in count {
- arrayCount[index].append(num)
- }
- var result = [Int]()
- // Идем в обратном порядке и ищем k максимально встречающихся элементов
- for i in 0..<arrayCount.count {
- var indexEnd = arrayCount.count - 1 - i
- // проходимся по массиву который лежит по индексу
- for num in arrayCount[indexEnd] {
- result.append(num)
- if result.count == k {
- return result
- }
- }
- }
- return []
- }
- let numsKFrequent = [1,1,1,2,2,3]
- topKFrequent(numsKFrequent, 2)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement