Leetcode 465 Solution

This article provides solution to leetcode question 465 (optimal-account-balancing)

https://leetcode.com/problems/optimal-account-balancing

Solution

class Solution: def minTransfers(self, transactions: List[List[int]]) -> int: m = collections.defaultdict(int) for src, dst, amount in transactions: m[src] -= amount m[dst] += amount
acnts = [] for i, asset in m.items(): if asset == 0: continue acnts.append(asset)
ans = float("inf") def pay(i, res): nonlocal acnts nonlocal ans
if i == len(acnts): ans = min(ans, res) return
if acnts[i] == 0: pay(i + 1, res) return
for j in range(i + 1, len(acnts)): if acnts[i] * acnts[j] < 0: acnts[j] += acnts[i] pay(i + 1, res + 1) acnts[j] -= acnts[i]
pay(0, 0)
return ans