【面试】小东最少需要拉多少票才能让她获胜(京东实习笔试题)
一、前言
京东的一道笔试题,大意如下。
小东与其他人玩游戏,每个人都有候选票,投票票数最多的人获胜,在投票之前可以预测每个人有多少票,请问小东最少需要从别人那里拉多少票才能保证她获胜,拉完票之后其他人的票数可能为0。
如有如下输入:
2
1 4
第一行表示总共有两个候选人,并且小东的预测票数为1,另外一个候选人票数为4。
输出如下:
2
表示小东需要拉两票就保证她获胜。
再如输入:
4
7 6 6 6
输出如下:
0
二、源程序
其实这道题目不算太难,关键是要找到正确思路,源代码如下
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);
}
}
三、总结
首先需要好好分析题目,然后找好思路,这很很重要,谢谢各位园友观看~
PS:如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”,将会是我不竭的动力!
作者:leesf 掌控之中,才会成功;掌控之外,注定失败。
出处:http://www.cnblogs.com/leesf456/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
如果觉得本文对您有帮助,您可以请我喝杯咖啡!