题解 | 小红的整数配对-Java
小红的整数配对
https://www.nowcoder.com/practice/66b9810e4fe34956a8d1f5c67aacc6dc
import java.util.*; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); int k = in.nextInt(); int[] an = new int[n]; for(int i=0;i<n;i++){ an[i] = in.nextInt(); } Arrays.sort(an); // 从小到大排序,后续从后往前取最大元素 long sum = 0; // 改为long,防止数据溢出 // 从后往前遍历,优先配对最大和次大元素 for(int i = n-1; i > 0; i--){ // 满足条件则配对,累加乘积 if(an[i] - an[i-1] <= k){ sum += (long)an[i] * an[i-1]; // 强制转型,避免int相乘溢出 i--; // 跳过已配对的次大元素 } } System.out.println(sum); } }