题解 | 小红的整数配对-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);
    }
}

全部评论

相关推荐

Sigma429:极兔啊,薪资开的巨低,还在上海,索性不做笔试了
点赞 评论 收藏
分享
09-12 11:55
已编辑
湖南工商大学 Java
那一天的Java_J...:这种一堆问题的,别去
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务