问题描述
小C参与了一场抢红包的游戏,现在他想要对所有参与抢红包的人进行一次运气排名。排名规则如下:抢到的金额越多,排名越靠前;如果两个人抢到的金额相同,则按照他们抢红包的顺序进行排名。比如,如果小C和小U抢到的金额相同,但小C比小U先抢,则小C排在小U前面。
测试样例
样例1:
输入:n = 4 ,s = ["a", "b", "c", "d"] ,x = [1, 2, 2, 1]
输出:['b', 'c', 'a', 'd']
样例2:
输入:n = 3 ,s = ["x", "y", "z"] ,x = [100, 200, 200]
输出:['y', 'z', 'x']
样例3:
输入:n = 5 ,s = ["m", "n", "o", "p", "q"] ,x = [50, 50, 30, 30, 20]
输出:['m', 'n', 'o', 'p', 'q']
Java代码
import java.util.*;
import java.util.stream.Collectors;
public class Main {
public static List<String> solution(int n, List<String> s, List<Integer> x) {
// write code here
LinkedHashMap<String, Integer> list = new LinkedHashMap<>();
for (int i = 0; i < s.size(); i++) {
Integer integer = list.getOrDefault(s.get(i), 0);
list.put(s.get(i), integer + x.get(i));
}
List<String> result = list.keySet().stream().sorted(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return list.get(o2) - list.get(o1);
}
}).collect(Collectors.toList());
return result;
}
public static void main(String[] args) {
System.out.println(solution(4, Arrays.asList("a", "b", "c", "d"), Arrays.asList(1, 2, 2, 1))
.equals(Arrays.asList("b", "c", "a", "d")));
System.out.println(solution(3, Arrays.asList("x", "y", "z"), Arrays.asList(100, 200, 200))
.equals(Arrays.asList("y", "z", "x")));
System.out.println(solution(5, Arrays.asList("m", "n", "o", "p", "q"), Arrays.asList(50, 50, 30, 30, 20))
.equals(Arrays.asList("m", "n", "o", "p", "q")));
}
}
309

被折叠的 条评论
为什么被折叠?



