代码的出现:第1天
#初学者 #编程 #java #adventofcode

对于这个难题,我们可以利用最大 - 蜂座来存储精灵以降序携带的卡路里。

对于问题的第1部分,我们可以查看最大卡路里的最大卡路里

,对于第2部分,我们可以循环循环上最大 - 高峰,并找到携带的最大3卡路里的总和。​​

我们可以以相反的顺序使用PriorityQueue,以在java
中制作最大头。

import java.io.File;
import java.util.Collections;
import java.util.PriorityQueue;
import java.util.Scanner;

public class Day1 {
    public static void main(String[] args) throws Exception {
        String path = "D:\\projects\\AdventOfCode\\src\\input.txt";
        File input = new File(path);
        Scanner sc = new Scanner(input);
        var pq = new PriorityQueue<Integer>(Collections.reverseOrder()); // max-heap
        int calories = 0;

        while (sc.hasNextLine()) {
            String calorie = sc.nextLine();
            // reset for new elf
            if (calorie.equals("")) {
                pq.offer(calories);
                calories = 0;
                continue;
            }

            calories += Integer.parseInt(calorie);
        }

        System.out.println("Result part 1 : " + pq.peek());

        int res = 0;
        for (int i = 0; i < 3; i++) {
            res += pq.poll();
        }

        System.out.println("Result part 2 : " + res);
        sc.close();
    }
}