Добрый день!
Скажите пожалуйста, как отсортировать массив по количеству повторяющихся элементов?
К примеру:
Массив чисел [1, 2, 3, 4, 5, 3, 2, 1, 2, 2]
На выходе должно получиться: [2, 2, 2, 2, 3, 3, 1, 1, 4, 5 ]
Заранее спасибо!
Добрый день!
Скажите пожалуйста, как отсортировать массив по количеству повторяющихся элементов?
К примеру:
Массив чисел [1, 2, 3, 4, 5, 3, 2, 1, 2, 2]
На выходе должно получиться: [2, 2, 2, 2, 3, 3, 1, 1, 4, 5 ]
Заранее спасибо!
let items = [1, 2, 3, 4, 5, 3, 2, 1, 2, 2]
let mappedItems = items.map { ($0, 1) }
let counts = Dictionary(mappedItems, uniquingKeysWith: +)
let orderedItems = counts.sorted { $0.value > $1.value }
let result = Array(orderedItems.map { Array(repeating: $0.key, count: $0.value) }.joined())
let items = [1, 2, 3, 4, 5, 3, 2, 1, 2, 2]
let result = items.reduce(into: [[Int]]()) { result, item in
if let index = result.firstIndex(where: { $0.contains(item) }) {
result[index] += [item]
} else {
result.append([item])
}
}.sorted { $0.count > $1.count }.flatMap { $0 }