public class Main1 {     static class Pig {         public int id;         public int number;         public int age;         public Pig(int id, int number, int age) {             this.id = id;             this.number = number;             this.age = age;         }         @Override         public String toString() {             return String.valueOf(age);         }     }     private static String calculate(int m, int k) {         PriorityQueue<Pig> minHeap = new PriorityQueue<>(                 Comparator.comparingInt(o ->                         Integer.valueOf(new StringBuilder(String.valueOf(o.number)).reverse().toString())));         LinkedList<Pig> list = new LinkedList<>();         list.add(new Pig(1, 2, 1));         list.add(new Pig(2, 3, 3));         LinkedList<Integer> number = new LinkedList<>();         number.add(2);         number.add(3);         for (Pig pig : list) {             minHeap.offer(pig);             if (minHeap.size() > k) {                 minHeap.poll();             }         }         int year = 2020;         int id = 2;         while (id < m) {             LinkedList<Pig> buffer = new LinkedList<>();             for (Pig pig : list) {                 if (pig.age < 2) {                     pig.age++;                 } else {                     id++;                     int thisNumber;                     if (number.size() < 3) {                         thisNumber = 4;                         number.add(thisNumber);                     } else {                         thisNumber = number.get(0) + number.get(1);                         number.add(thisNumber);                         number.remove(0);                     }                     Pig newPig = new Pig(id, thisNumber, 1);                     buffer.add(newPig);                     minHeap.offer(newPig);                     if (minHeap.size() > k) {                         minHeap.poll();                     }                     if (id == m) {                         break;                     }                 }             }             list.addAll(buffer);             buffer.clear();             System.out.println("Year: " + year + "\t" + list);             if (id >= m) {                 break;             }             year++;         }         return number.get(number.size() - 1) + "," + year + "," + minHeap.poll().id;     }     public static void main(String[] args) {         String tmp = calculate(20, 3);         System.out.println(tmp);     } 这是我刚调的,还请大佬指正!当时的测试用例是过了的。阿里我佛系了,这笔试血炸……
点赞 1

相关推荐

牛客网
牛客企业服务