Mam poważne wątpliwości, czy ten algorytm działa. Załóżmy tak:
-tablica składa się z elementów: 2,2,3,3,3,5,5
-k dobrane tak, że n/k = 2
A więc tak. Domniemamy, że '2' jest przywódcą. Po przejściu do 2 indeksu, mamy licz=2, przywodca=2. Potem po przejściu do 5 indeksu mamy tak, że licz=1, przywodca = 3. Na samym końcu mamy, że licz=1, przywodca=5 (o ile dobrze na szybko liczę i zrozumiałem twój algorytm). Więc teoretycznie nie ma żadnego przywódcy - praktycznie jest i jest to '3'.
Nie znam wszystkich założeń zadania. Nie wiem, czy w przypadku gdy jest więcej niż jeden przywódca, to mogę zwrócić jedną liczbę czy wszystkie? Na pętlach to bym do tego nie podchodził, bo żeby to na pętlach zrobić to algorytm miałby O(n^2) - w najgorszym przypadku. Podszedł bym do tego w najprostszy sposób. W Mapie<k,v> przechowywałbym ile razy (v) wystąpił element (k). W chwili gdy v będzie większe od n/k zwróciłbym v. Przeszedłbym też na funkcje, a nie pisał wszystko w mainie.