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

Kth Largest Element in an Array

Sizga butun sonlardan iborat nums massivi va bitta k butun soni berilgan. Massivdagi k-eng katta elementni qaytaring.

E'tibor bering, bu tartiblangan massivdagi har xil (o'zaro farqli) elementlar ichidan emas, balki massivdagi umumiy k-eng katta element hisoblanadi.

Sizning yechimingiz O(n) vaqt murakkabligida ishlashi tavsiya qilinadi (tayyor tartiblash - sort() funksiyasisiz).

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

Misollar

kod
Input: nums = [3,2,1,5,6,4], k = 2
Output: 5
Tushuntirish: Massivni kamayish bo'yicha tartiblaganda: [6, 5, 4, 3, 2, 1]. Uning ichidan 2-kattasi bu 5.
kod
Input: nums = [3,2,3,1,2,4,5,5,6], k = 4
Output: 4
kod
Input: nums = [1], k = 1
Output: 1

Maslahatlar

  1. To'liq saralashdan tashqari, "k-eng katta element"ni topish uchun heap (uyum) yoki quickselect kabi qisman tartiblashga asoslangan usullar borligini o'ylab ko'ring — ammo eng sodda va tez tushuniladigan yo'l ham chiqishga imkon beradi.
  2. Eng sodda yondashuv sifatida massivning nusxasini kamayish tartibida to'liq saralang va (k-1)-indeksdagi elementni qaytaring; O(n) talab qilinsa, minimal hajmli max-heap yoki quickselect (tez saralashdagi bo'lish qadamiga o'xshash) orqali faqat kerakli qismni tartiblang.