第一题,用小根堆记录分数(不含重复分数),用hashMap记录每个分数的人数;每次从堆中弹出分数,然后累加对应的人数,直到人数在[x, y]之间返回此时弹出的分数,否则返回 -1。第二题,排序+贪心,贪心策略是排序后的每个位置要变化到的数就是他的index + 1。第三题,维护两个以 index 作为值得小根堆,一个堆记录着坐 0 个人的index, 一个堆记录着坐 1 个人的index。按照M、F的找座位策略入座即可。需要注意的是 用Scanner和System.out.println(),时间会超过,当时我就是这样时间超出了,而又不知道咋解决,然后就提交试卷看看答案是怎么写的。发现要用 BufferedReader和BufferedWriter。第四题,由于第三天时间超了,就直接提交了,没看。