Znajdowanie lidera w zbiorze¶
Opis problemu¶
Implementacja¶
Początkowo ustawiamy zmienną count
na \(0\).
W pętli for
iterujemy po każdym elemencie el
z listy array
.
W każdej iteracji sprawdzamy, czy el
jest równy poszukiwanemu elementowi element
. Jeśli tak, inkrementujemy zmienną count
.
Po zakończeniu pętli, zwracamy wartość zmiennej count
, która reprezentuje liczbę wystąpień elementu w liście.
Funkcja find_majority
przyjmuje jako argument listę array
(lista liczb) i zwraca liczbę dominującą (majority
) lub \(-1\) w przypadku braku liczby dominującej.
Na początku ustawiamy zmienną counter
na \(0\) i current_candidate
na \(0\).
W pętli for
iterujemy po każdym elemencie el
z listy array
.
Jeśli counter
jest równy \(0\), oznacza to, że aktualnie nie mamy żadnego kandydata na liczbę dominującą. Ustawiamy current_candidate
na bieżący element el
i counter
na \(1\).
W przeciwnym przypadku, jeśli counter
jest większy od \(0\), sprawdzamy, czy bieżący element el
jest równy aktualnemu kandydatowi current_candidate
. Jeśli tak, inkrementujemy counter
o \(1\).
Jeśli el
nie jest równy current_candidate
, dekrementujemy counter
o \(1\).
Po zakończeniu pętli, sprawdzamy, czy liczba wystąpień current_candidate
w liście array
jest większa lub równa połowie długości listy (len(array) / 2
). Jeśli tak, zwracamy current_candidate
jako liczbę dominującą.
W przeciwnym przypadku, gdy brak liczby dominującej, zwracamy \(-1\).
W przykładzie podana jest konkretna lista array
. Funkcja find_majority
jest wywoływana z tą listą, a wynikowa liczba dominująca jest wyświetlana przy użyciu funkcji print
.
W wyniku wykonania tego kodu zostanie wyświetlona wartość \(5\) ponieważ liczba \(5\) występuje \(6\) razy w liście, co jest większe niż połowa długości listy.