2019春招,完美世界笔试第二题
我的解答:
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int n = sc.nextInt();
int[] A = new int[n];
int[] B = new int[n];
for (int i = 0; i < n; i++) {
A[i] = sc.nextInt();
}
for (int i = 0; i < n; i++) {
B[i] = sc.nextInt();
}
Arrays.sort(A);
Arrays.sort(B);
int indexA = n - 1;
int indexB = n - 1;
int count = 0;// A最多获胜的次数
// 记录A获胜的次数
while (indexA >= 0 && indexB >= 0) {
if (A[indexA] <= B[indexB]) {
indexB--;// 在数组B中,找当前的A[indexA]小的元素
} else {
// (A[indexA] > B[indexB])
count++;// A又战胜了B一次。
indexA--;// 指针同时后移,接着往后面找
indexB--;
}
}
int score = (count - (n - count)) * 100;
System.out.println("A队得到的元宝数:"+score);
System.out.println("A,B两队按战斗力排序后:");
for (int i : A) {
System.out.print(i+" ");
}
System.out.println();
for (int i : B) {
System.out.print(i+" ");
}
System.out.println();
System.out.println("-----------------");
}
}
}
测试结果:
4
9 7 5 3
10 8 5 2
A队得到的元宝数:200
A,B两队按战斗力排序后:
3 5 7 9
2 5 8 10
-----------------
4
1 1 1 1
2 2 2 2
A队得到的元宝数:-400
A,B两队按战斗力排序后:
1 1 1 1
2 2 2 2
-----------------
4
2 2 2 2
1 1 1 1
A队得到的元宝数:400
A,B两队按战斗力排序后:
2 2 2 2
1 1 1 1
-----------------