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

复制代码
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() 进行排序

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

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

相关推荐
慧翔天地人才发展学苑4 小时前
大厂 | 华为半导体业务部2026届秋招启动
华为·面试·职场和发展·跳槽·求职招聘·职场晋升
程序员三藏6 小时前
Selenium+python自动化测试:解决无法启动IE浏览器及报错问题
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
黑客影儿10 小时前
黑客哲学之学习笔记系列(三)
笔记·学习·程序人生·安全·职场和发展·网络攻击模型·学习方法
熬了夜的程序员11 小时前
【LeetCode】16. 最接近的三数之和
数据结构·算法·leetcode·职场和发展·深度优先
Miraitowa_cheems11 小时前
LeetCode算法日记 - Day 15: 和为 K 的子数组、和可被 K 整除的子数组
java·数据结构·算法·leetcode·职场和发展·哈希算法
火车叨位去19492 天前
力扣top100(day04-05)--堆
算法·leetcode·职场和发展
qq_513970443 天前
力扣 hot100 Day76
算法·leetcode·职场和发展
程序员曦曦3 天前
10:00开始面试,10:06就出来了,问的问题有点变态。。。
自动化测试·软件测试·功能测试·程序人生·面试·职场和发展
是乐谷3 天前
阿里云杭州 AI 产品法务岗位信息分享(2025 年 8 月)
java·人工智能·阿里云·面试·职场和发展·机器人·云计算
天才测试猿3 天前
常见的Jmeter压测问题
自动化测试·软件测试·python·测试工具·jmeter·职场和发展·压力测试