Allocate Mailboxes LeetCode solution in Python
1class Solution:2def minDistance(self, houses: List[int], k: int) -> int:3houses.sort()45@lru_cache(None)6def dp(left, right, k):7if k == 1: # <-- 1.8mid = houses[(left + right) // 2]9return sum(abs(houses[i] - mid) for i in range(left, right + 1))1011return min(12dp(left, i, 1) + dp(i + 1, right, k - 1)13for i in range(left, right - k + 2)14) # <-- 2.1516return dp(0, len(houses) - 1, k)