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

Majority Element II

Sizga butun sonlardan iborat nums massivi berilgan. Massivda n/3 dan ko'p marta (strictly more than ⌊n/3⌋ times) takrorlanadigan barcha elementlarni toping.

Yechimingiz O(1) qo'shimcha xotira bilan ishlashi kerak.

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

Misollar

kod
Input: nums = [3,2,3]
Output: [3]
kod
Input: nums = [1,2]
Output: [1, 2]
kod
Input: nums = [1,1,1,3,3,2,2,2]
Output: [1, 2]

Maslahatlar

  1. n/3 dan ko'p marta uchraydigan elementlar ko'pi bilan ikkita bo'lishi mumkinligini payqang — bu Boyer-Moore Voting algoritmini ikkita nomzod bilan umumlashtirishga olib keladi.
  2. Ikkita nomzod (cand1, cand2) va ularning hisoblagichlarini yuriting: joriy son mavjud nomzodlardan biriga teng bo'lsa hisoblagichini oshiring, bo'sh nomzod bo'lsa joriy sonni nomzod qiling, aks holda ikkala hisoblagichni ham kamaytiring; oxirida massivni qayta aylanib, ikkala nomzodning haqiqiy takrorlanish sonini hisoblab, n/3 dan ko'p bo'lganlarinigina natijaga qo'shing.