蓝桥杯--基础(哈夫曼)

复制代码
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class BASIC28 {
    //哈夫曼书
    public  static void main(String[] args) {
        Scanner Scanner=new Scanner(System.in);
        int n=Scanner.nextInt();
        List<Integer> list=new ArrayList<Integer>() ;
        for(int i=0;i<n;i++)
        {
            list.add(Scanner.nextInt());
        }
        //数组删除一个元素比较的麻烦(使用java里面的数组不能直接的删除一个元素)
        //但是使用list就是可以直接的进行删除了是吗???
        //原来使用list是可以直接的进行排序的
        int sum=0;
        while(list.size()!=1)
        {
            Collections.sort(list);
            //要输出的是每次相加的这个和是吧,那么需要另外的开辟一个来进行存储???
            list.add(list.get(0)+list.get(1));
            sum+=list.get(0)+list.get(1);
            //当把第一个元素删除之后,原本的第二个元素就是变为了第一个元素
            //所以这个地方需要进行删除还是0
            list.remove(0);
            list.remove(0);

        }
        //最后一个数字就是计算得到的,已经在前面的基础上添加过了
        System.out.println(sum);
    }
}

根据可能的规则,直接使用list进行存储(因为提供直接移除元素的函数)

然后需要注意的就是list也是可以排序的,不过是Collections.sort()

然后数组的排序是Arrays.sort() 进行排序

最后就是在移除的时候,应该移除的是前面的两个最小的

但是当移除一个之后,后面的那个又会接着补充进来,所以这个时候就是这个样子的

相关推荐
浮生带你学Java8 小时前
2025Java面试题及答案整理( 2025年 7 月最新版,持续更新)
java·开发语言·数据库·面试·职场和发展
墨染点香10 小时前
LeetCode Hot100【5. 最长回文子串】
算法·leetcode·职场和发展
im_AMBER12 小时前
Leetcode 03 java
算法·leetcode·职场和发展
轮到我狗叫了13 小时前
力扣.1312让字符串成为回文串的最少插入次数力扣.105从前序和中序遍历构造二叉树牛客.拼三角力扣.57插入区间编辑
算法·leetcode·职场和发展
ヾChen14 小时前
13届蓝桥杯省赛程序设计试题
物联网·学习·蓝桥杯·c#
闻缺陷则喜何志丹14 小时前
【带权的并集查找】 P9235 [蓝桥杯 2023 省 A] 网络稳定性|省选-
数据结构·c++·蓝桥杯·洛谷·并集查找
木子.李34717 小时前
记录Leetcode中的报错问题
算法·leetcode·职场和发展
牛客企业服务1 天前
2025秋招突围战:AI智能监考如何重构远程笔试公平防线?
java·大数据·人工智能·面试·职场和发展·重构·求职招聘
收获不止数据库1 天前
技术人生——第13集:回归本源,大道至“减”
数据库·人工智能·职场和发展·数据库开发·sql优化·数据库优化·数据库设计
诸葛大钢铁1 天前
Excel转PDF的三种方法
笔记·职场和发展·pdf·excel