Jesse and Cookies

  • + 0 comments

    java

    public static int cookies(int k, List<Integer> A) {
            // Write your code here
            int itration = 0 ;
            
            PriorityQueue<Integer> Q = new PriorityQueue<>() ;
            for(int i : A)
            {
                Q.add(i);
            }
            
            while(Q.size() > 1 && Q.peek() < k)
            {
                int least = Q.poll() ;
                int secondLeast = Q.poll() ;
                
                // Even if secondLeast >= k, we can still do:
                // Combine: newSweet = least + 2 * secondLeast
                int newSweetness = least + 2* secondLeast ;
                Q.add(newSweetness);
                itration++ ;
            }
            
            if(Q.peek() != null && Q.peek() >= k)
            {
                return itration ;
            }else{
                return -1 ;
            }
            
        }