選舉正在進行中!找到仍有機會贏得選舉的候選人人數
考慮給每個候選人到目前爲止, 和整數k誰沒有投他們的票呢, 發現誰還是有機會的候選人數選民票數的數字陣列贏得選舉。
選舉的獲勝者必須獲得比其他候選人更多的選票。 如果兩名或兩名以上的候選人獲得相同(最多)的選票數,則 假設根本沒有贏家。
例
對於票= [2,3,5,2],且k = 3時,輸出應該是 electionsWinners(票中,k)= 2
對於票= [ 1,3,3,1,1]且k = 0時,輸出應該是 electionsWinners(票中,k)= 0。
對於票= [5,1,3,1,4]和k = 0,輸出應該是 選舉韋恩rs(票數,k)= 1。
int electionsWinners(int[] votes, int k) {
int max = votes[0];
int counter = 0;
/* I assumed all the voters who haven't cast their vote,
votes only 1 candidate */
for(int i = 1; i < votes.length; i++) {
//getting the candidate who has the highest vote.
if(votes[i] > max) {
max = votes[i];
}
}
// count the candidates who still have the chance to win.
for(int i = 0; i < votes.length; i++) {
if(k != 0){
if((votes[i] + k) > max) {
counter++;
}
} else if(k == 0) {
/* if there is no voters left to vote,
and the candidates who has the highest vote will be the winner.
and if two or more candidates recieve the same(maximum) number of votes,
assume there is no winner. */
// count the no. of candidates who recieve the same(maximum) number of votes.
if(votes[i] == max) {
counter++;
if(counter == 1) {
counter = 1;
} else {
counter = 0;
}
}
}
}
return counter;
}
我是編程的初學者。盡我所能解決它,這是我的代碼。我只是想知道是否有簡化的解決方案。
我建議張貼http://codereview.stackexchange.com/ – assylias
'if'聲明是不必要的冗長,E。 G。如果(k!= 0)A else if(k == 0)B'可以簡化爲'if(k!= 0)A else B'; 'if(counter == 1)counter = 1' is redundant –