Skip to content

Commit 6175ab5

Browse files
committed
Time: 128 ms (21.93%), Space: 18.7 MB (8.77%) - LeetHub
1 parent 17caf90 commit 6175ab5

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
from functools import lru_cache
2+
from typing import List
3+
4+
class Solution:
5+
def assignBikes(self, workers: List[List[int]], bikes: List[List[int]]) -> int:
6+
7+
@lru_cache(maxsize=None)
8+
def dfs(workers, bikes):
9+
if not workers or not bikes:
10+
return 0
11+
first_worker = workers[0]
12+
other_workers = workers[1:]
13+
out = float('inf')
14+
for idx,bike in enumerate(bikes):
15+
dist = abs(first_worker[0]-bike[0]) + abs(first_worker[1]- bike[1])
16+
other_bikes = bikes[:idx] + bikes[idx+1:]
17+
out = min(out, dist + dfs(other_workers, other_bikes))
18+
return out
19+
20+
workers = tuple(tuple(w) for w in workers)
21+
bikes = tuple(tuple(b) for b in bikes)
22+
23+
return dfs(workers, bikes)
24+
25+
26+
workers = [[0, 0], [2, 1]]
27+
bikes = [[1, 2], [3, 3]]
28+
print(Solution().assignBikes(workers, bikes))

0 commit comments

Comments
 (0)