Thais Python

 avatar
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...