{x}
blog image

Richest Customer Wealth

You are given an m x n integer grid accounts where accounts[i][j] is the amount of money the i​​​​​​​​​​​th​​​​ customer has in the j​​​​​​​​​​​th​​​​ bank. Return the wealth that the richest customer has.

A customer's wealth is the amount of money they have in all their bank accounts. The richest customer is the customer that has the maximum wealth.

 

Example 1:

Input: accounts = [[1,2,3],[3,2,1]]
Output: 6
Explanation:
1st customer has wealth = 1 + 2 + 3 = 6
2nd customer has wealth = 3 + 2 + 1 = 6
Both customers are considered the richest with a wealth of 6 each, so return 6.

Example 2:

Input: accounts = [[1,5],[7,3],[3,5]]
Output: 10
Explanation: 
1st customer has wealth = 6
2nd customer has wealth = 10 
3rd customer has wealth = 8
The 2nd customer is the richest with a wealth of 10.

Example 3:

Input: accounts = [[2,8,7],[7,1,3],[1,9,5]]
Output: 17

 

Constraints:

  • m == accounts.length
  • n == accounts[i].length
  • 1 <= m, n <= 50
  • 1 <= accounts[i][j] <= 100

Solution Explanation: Finding the Richest Customer's Wealth

The problem asks to find the maximum wealth among a set of customers, where each customer's wealth is the sum of their money across different banks. The input is a 2D array (matrix) accounts where accounts[i][j] represents the amount of money the i-th customer has in the j-th bank.

Approach:

The most efficient approach involves iterating through the accounts array and calculating the sum of each customer's wealth. We keep track of the maximum wealth encountered so far.

Algorithm:

  1. Initialization: Initialize a variable maxWealth to 0 (or a very small negative number to handle cases where all wealth values are negative).

  2. Iteration: Iterate through each row (customer) of the accounts array.

  3. Wealth Calculation: For each customer, iterate through their bank accounts (inner loop) and sum up their money.

  4. Maximum Update: Compare the current customer's wealth with maxWealth. If the current customer's wealth is greater, update maxWealth.

  5. Return: After processing all customers, return maxWealth.

Time Complexity Analysis:

The solution has nested loops. The outer loop iterates m times (number of customers), and the inner loop iterates n times (number of banks per customer). Therefore, the overall time complexity is O(m*n). This is linear with respect to the size of the input array.

Space Complexity Analysis:

The solution uses only a constant amount of extra space (maxWealth variable), regardless of the input size. Therefore, the space complexity is O(1), which is constant.

Code Examples (with detailed comments):

The provided code examples in multiple languages implement this approach efficiently. Here's a breakdown of a Python version with detailed comments:

class Solution:
    def maximumWealth(self, accounts: List[List[int]]) -> int:
        max_wealth = 0  # Initialize maximum wealth to 0
 
        for customer_accounts in accounts: # Iterate through each customer's accounts
            customer_wealth = sum(customer_accounts) # Calculate wealth for current customer
            max_wealth = max(max_wealth, customer_wealth) # Update max_wealth if necessary
 
        return max_wealth # Return the maximum wealth found

The other language examples follow a very similar structure, differing only in syntax. They all efficiently achieve a linear time and constant space solution.