腾讯笔试第二题喝咖啡请教
讲我的思路:公式为 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); } }