[プログラマー]お尻2級もっと辛い


質問する


[プログラマー-JAVA]お尻レベル2もう少し辛い

に答える

  • 優先キュー
  • を使用
  • scovilleアレイのすべての要素をキューに入れ、2つを減算して
  • をブレンドします.
  • peek()の場合Kより大きい数まで混合する
  • を混ぜてもダメなら-1輪
  • import java.util.*;
    class Solution {
        public int solution(int[] scoville, int K) {
            int answer = 0;
            
            PriorityQueue<Integer> queue = new PriorityQueue<>();
            for(int i = 0 ; i < scoville.length; i++){
                queue.add(scoville[i]);
            }
            
            while(queue.peek() < K){
                if(queue.size() < 2){
                    answer = -1;
                    break;
                }
                
                int num1 = queue.poll();
                int num2 = queue.poll();
                queue.add(num1 + num2 * 2);
                answer++;
            }
            
            return answer;
        }
    }
  • Priority Queueは初めてのようです
  • Priority Queueは、Heapを適用する典型的なケースであるデータ構造です.
  • 自体が優先順位で並べ替えられている特徴があります.