【面試】小東最少須要拉多少票才能讓她獲勝(京東實習筆試題)

1、前言java

  京東的一道筆試題,大意以下。code

  小東與其餘人玩遊戲,每一個人都有候選票,投票票數最多的人獲勝,在投票以前能夠預測每一個人有多少票,請問小東最少須要從別人那裏拉多少票才能保證她獲勝,拉完票以後其餘人的票數可能爲0。blog

  若有以下輸入:  排序

  2遊戲

  1 4class

  第一行表示總共有兩個候選人,而且小東的預測票數爲1,另一個候選人票數爲4。import

  輸出以下:date

  2程序

  表示小東須要拉兩票就保證她獲勝。im

  再如輸入:

  4

   7 6 6 6

  輸出以下:

  0

2、源程序

  其實這道題目不算太難,關鍵是要找到正確思路,源代碼以下 

import java.util.*;

public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int num = scan.nextInt();
int[] candidate = new int[num];
for (int i = 0; i < num; i++) {
candidate[i] = scan.nextInt();
}
scan.close();

// 小東當前的選票
int vote = candidate[0];

// 其餘人的選票
int[] others = new int[candidate.length - 1];
for (int i = 0; i < candidate.length - 1; i++) {
others[i] = candidate[i + 1];
}

// 對其餘人的選票進行排序
Arrays.sort(others);
int count = 0;
while (vote <= others[others.length - 1]) { // 小於最大選票
count++; // 增長鬚要的拉票數
vote++; // 增長小東當前的選票
others[others.length - 1]--; // 減小最大選票
Arrays.sort(others); // 再次排序
}

System.out.println(count);
}
}

3、總結

  首先須要好好分析題目,而後找好思路,這很很重要,謝謝各位園友觀看~

相關文章
相關標籤/搜索