151 / 205
LeetCode · MediumO'rta20 ball· ~25 daqiqa

Top K Frequent Elements

Sizga butun sonlardan iborat nums massivi va k soni berilgan. Ushbu massivda eng ko'p takrorlanadigan k ta elementni qaytaring. Natijani istalgan tartibda qaytarish mumkin.

Yechimingiz O(n log n) dan tezroq ishlashi kerak.

example.go
func solve(nums []int, k int) []int {
    // ...
}

Misollar

kod
Input: nums = [1,1,1,2,2,3], k = 2
Output: [1,2]
kod
Input: nums = [1], k = 1
Output: [1]
kod
Input: nums = [4, 4, 4, 5, 5, 6], k = 1
Output: [4]
kod
Input: nums = [-1, -1], k = 1
Output: [-1]

Maslahatlar

  1. Avval har bir sonning necha marta takrorlanganini sanab chiqing, so'ng shu chastotalar bo'yicha noyob sonlarni tartiblashni o'ylab ko'ring (to'liq O(n log n) sort ham ishlaydi, tezroq yechim uchun heap yoki bucket sort ni ko'rib chiqing).
  2. Har bir sonning chastotasini map orqali hisoblang; noyob sonlar ro'yxatini chastotasi bo'yicha kamayish tartibida saralang (yoki chastotani indeks sifatida ishlatib bucket'larga joylashtiring) va eng katta chastotali dastlabki k tasini natija sifatida qaytaring.