Jesse and Cookies

  • + 0 comments

    Python Solution with using Heap directly,

    def getElement(arr, arr2, i, j): if (len(arr) > i and len(arr2) > j): if (arr[i] <= arr2[j]): return arr[i], i+1, j else: return arr2[j], i, j+1 elif (len(arr) > i): return arr[i], i+1, j elif (len(arr2) > j): return arr2[j], i, j+1 return 0, i, j

    def cookies(k, A): arr = sorted(A) arr2 = [] i, j, ln = 0, 0, len(arr)

    if (ln == 0 and k > 0):
        return -1
    count = 0
    
    if (ln > 0):
        while((i + j + 1 < len(arr) + len(arr2)) and ((len(arr) > i and arr[i] < k) or (len(arr2) > j and arr2[j] < k))):
            count += 1
            firstSmallest, i, j = getElement(arr, arr2, i, j)
            secondSmallest, i, j = getElement(arr, arr2, i, j)
            newCookie = firstSmallest + (2 * secondSmallest)
            arr2.append(newCookie)
        if ((len(arr) > i and arr[i] < k) or (len(arr2) > j and arr2[j] < k)):
            count = -1
    return count