腾讯笔试第二题喝咖啡请教
讲我的思路:公式为 ai * (j-1) + bi * (n-j)
化简为: j * (ai - bi) + b * n - a,
后面的 b* n - a 直接存进排队结果 sum 里面。
然后直接把 ai - bi 的值存进一个数组,然后对数组排序,数组中最大的值乘以 1,依次类推,最小的值乘以 n。
只过了 20 %,请教哪里有问题?
import java.util.Arrays;
import java.util.Scanner;
public class StarBucks {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
long sum = 0;
int[] extra = new int[n];
for(int i = 0; i< n; i++) {
int a = sc.nextInt();
int b = sc.nextInt();
sum += b * n - a;
extra[i] = a-b;
}
Arrays.sort(extra);
for(int i = extra.length -1,j = 1; i>=0; i--,j++) {
sum += extra[i] * j;
}
System.out.println(sum);
}
}

