Thais Python
unknown
python
3 years ago
932 B
8
Indexable
def find_min_negative_debtors(self, debts: List[str]) -> List[str]:
borrower_map = defaultdict(int)
lender_map = defaultdict(int)
for debt in debts:
borrower, lender, amount = re.split('\\s+', debt, maxsplit=2)
borrower_map[borrower] += int(amount)
lender_map[lender] += int(amount)
borrowers = list(set(borrower_map.keys()))
lenders = list(set(lender_map.keys()))
balance_people_dict = defaultdict(list)
min_balance = cast(int, math.inf)
for person in list(set(borrowers + lenders)):
net_balance = lender_map[person] - borrower_map[person]
if net_balance < 0:
balance_people_dict[net_balance].append(person)
min_balance = min(min_balance, net_balance)
return sorted(balance_people_dict[min_balance]) if min_balance < 0 else ['Nobody has a negative balance']
Editor is loading...