【面试】小东最少需要拉多少票才能让她获胜(京东实习笔试题)

一、前言

  京东的一道笔试题,大意如下。

  小东与其他人玩游戏,每个人都有候选票,投票票数最多的人获胜,在投票之前可以预测每个人有多少票,请问小东最少需要从别人那里拉多少票才能保证她获胜,拉完票之后其他人的票数可能为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);
}
}
复制代码

三、总结

  首先需要好好分析题目,然后找好思路,这很很重要,谢谢各位园友观看~

  

  

posted @   leesf  阅读(1731)  评论(10编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)

喜欢请打赏

扫描二维码打赏

了解更多

点击右上角即可分享
微信分享提示