题目描述 某赛事有n名选手参加,但是不同于其他的比赛,本比赛采取的是擂台赛的形式,n名选手排成一排,每次队伍的第一位和第二位选手进行比赛,输的一方会排到队尾。当某位选手取得m连胜时,他将成为最后的赢家,且游戏结束,请问截止到游戏结束,共会进行多少次比赛。两位选手的比赛结果由他们的战斗力决定,n位选手的战斗力是一个1~n的排列,也就是说他们的战斗力两两不同,不会有平局的情况。
输入第一行包含两个正整数n,m,分别代表参赛选手数量和取得连胜的要求。 (1<=n<=100000,1<=m<=10^9) 输入第二行包含n个正整数,中间用空格隔开,第i个数表示队伍的第i位选手的战斗力, 整体是一个1~n的排列。 输出仅包含一个正整数,表示截止到游戏终止,共进行多少场比赛。 4 2 1 3 2 4 样例输出 2public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int m = sc.nextInt(); int temp = m; //存储比较次数,若m>n也只需要最多比较n次, if(m>n) temp = n; Queue<Integer> q = new LinkedList<>(); for(int i=0;i<n;i++) q.add(sc.nextInt()); int y =0; //存储较大的值 int cnt = 0; //连胜次数 int count = 0; //总比较次数 int h =q.poll(); //存储第一个结点 while(cnt<temp) { y = q.peek(); if(h>y) { cnt++; q.poll(); q.add(y); }else { q.poll(); q.add(h); h=y; cnt=1; } count++; } if(m>n) System.out.println(count+m-n); else System.out.println(count); } }