Thais Python
unknown
python
2 years ago
932 B
4
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...