医院网站建设要素,中国建设培训网站查询系统,办公室装修图,青海城乡建设网站问题描述
小M参加了一场n个人的比赛#xff0c;比赛规则是所有选手两两对决。每个人有一个能力值#xff0c;对应着他们的序号。参赛者同时被分为黄色或蓝色两种颜色。比赛胜负的规则如下#xff1a;
当比赛双方颜色不同时#xff0c;能力值大的选手获胜#xff1b;
当比…问题描述
小M参加了一场n个人的比赛比赛规则是所有选手两两对决。每个人有一个能力值对应着他们的序号。参赛者同时被分为黄色或蓝色两种颜色。比赛胜负的规则如下
当比赛双方颜色不同时能力值大的选手获胜
当比赛双方颜色相同时能力值较小的选手获胜。你需要帮助小M计算每个选手在比赛中能赢得的场数。 测试样例
样例1
输入n 3, a [0, 0, 1]
输出[1, 0, 2]样例2
输入n 4, a [1, 0, 1, 0]
输出[1, 2, 1, 2]样例3
输入n 5, a [0, 1, 0, 1, 0]
输出[2, 2, 2, 2, 2]解题思路
理解胜负规则当比赛双方颜色不同时能力值大的选手获胜。当比赛双方颜色相同时能力值较小的选手获胜。数据结构选择我们可以使用一个数组来存储每个选手的胜场数。算法步骤初始化一个长度为 n 的数组 wins用于记录每个选手的胜场数。使用两层循环遍历所有可能的对决组合。根据对决双方的颜色和能力值更新 wins 数组。 代码
import java.util.Arrays;
public class Main { public static int[] solution(int n, int[] a) { // 初始化胜场数组 int[] wins new int[n]; // 遍历所有可能的对决组合for (int i 0; i n; i) {for (int j i 1; j n; j) {// 判断胜负并更新胜场数if (a[i] ! a[j]) {// 颜色不同能力值大的选手获胜if (i j) {wins[i];} else {wins[j];}} else {// 颜色相同能力值小的选手获胜if (i j) {wins[i];} else {wins[j];}}}}return wins;
}public static void main(String[] args) {System.out.println(Arrays.equals(solution(3, new int[]{0, 0, 1}), new int[]{1, 0, 2}));System.out.println(Arrays.equals(solution(4, new int[]{1, 0, 1, 0}), new int[]{1, 2, 1, 2}));System.out.println(Arrays.equals(solution(5, new int[]{0, 1, 0, 1, 0}), new int[]{2, 2, 2, 2, 2}));
}}