Advertisement
Alexxik

Untitled

Sep 15th, 2023 (edited)
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 1.34 KB | None | 0 0
  1. // MARK: - 347. Top K Frequent Elements
  2. // Решение
  3. // Нужно создать массив, где индексами будет частота встречания, а значением - массив элементов которые встретились таковое число раз
  4.  
  5. func topKFrequent(_ nums: [Int], _ k: Int) -> [Int] {
  6.    
  7.     var count = [Int:Int]()
  8.    
  9.     for num in nums {
  10.         count[num, default: 0] += 1
  11.     }
  12.    
  13.     // должнен создавать на 1 больше, так ка первый элемент массива - 0
  14.     var arrayCount: [[Int]] = Array(repeating: [], count: nums.count + 1)
  15.    
  16.     for (num, index) in count {
  17.         arrayCount[index].append(num)
  18.     }
  19.    
  20.     var result = [Int]()
  21.    
  22.     // Идем в обратном порядке и ищем k максимально встречающихся элементов
  23.     for i in 0..<arrayCount.count {
  24.         var indexEnd = arrayCount.count - 1 - i
  25.         // проходимся по массиву который лежит по индексу
  26.         for num in arrayCount[indexEnd] {
  27.             result.append(num)
  28.             if result.count == k {
  29.                 return result
  30.             }
  31.         }
  32.     }
  33.     return []
  34. }
  35. let numsKFrequent = [1,1,1,2,2,3]
  36. topKFrequent(numsKFrequent, 2)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement