MediumNo. 1774

Closest Dessert Cost — LeetCode 1774 Python Solution

Topics
Array, Dynamic Programming, Backtracking
Reading time
5 min

The problem

You would like to make dessert and are preparing to buy the ingredients. You have n ice cream base flavors and m types of toppings to choose from.

Example

Input
baseCosts = [1,7], toppingCosts = [3,4], target = 10
Output
10
Explanation
Consider the following combination (all 0-indexed):

Python solution

PythonSolution
class Solution:
    def closestCost(
        self, baseCosts: List[int], toppingCosts: List[int], target: int
    ) -> int:
        def dfs(i, t):
            if i >= len(toppingCosts):
                arr.append(t)
                return
            dfs(i + 1, t)
            dfs(i + 1, t + toppingCosts[i])

        arr = []
        dfs(0, 0)
        arr.sort()
        d = ans = inf

        # 选择一种冰激淋基料
        for x in baseCosts:
            # 枚举子集和
            for y in arr:
                # 二分查找
                i = bisect_left(arr, target - x - y)
                for j in (i, i - 1):
                    if 0 <= j < len(arr):
                        t = abs(x + y + arr[j] - target)
                        if d > t or (d == t and ans > x + y + arr[j]):
                            d = t
                            ans = x + y + arr[j]
        return ans

Complexity

Time
O(n·m) (typical)
Space · auxiliary
O(n·m)or optimized

Pattern: Backtracking

Build candidates one choice at a time and abandon a branch the moment it cannot work. LeetCode 1774. Closest Dessert Cost is filed here because LeetCode tags it Backtracking, which is the vocabulary this hub collects.

The backtracking guide has the Python template for the pattern and the 105 LeetCode problems that use it.

Related problems

Related problems
No.ProblemDifficulty
0473Matchsticks to SquareMedium
0494Target SumMedium
0526Beautiful ArrangementMedium
0638Shopping OffersMedium
0698Partition to K Equal Sum SubsetsMedium
0773Sliding PuzzleHard

Frequently asked questions

How hard is LeetCode 1774. Closest Dessert Cost?

LeetCode 1774. Closest Dessert Cost is rated Medium on LeetCode.

What topics does LeetCode 1774. Closest Dessert Cost cover?

LeetCode 1774. Closest Dessert Cost is tagged Array, Dynamic Programming and Backtracking on LeetCode.

Stuck on problems like this in a live interview?

Stealth Interview is a desktop app for macOS and Windows. It reads the problem off your screen and returns a working solution with a step-by-step explanation and its time and space complexity, invisible to screen sharing.

Free to download. Check it runs on your machine, then pick a plan.