You are given an m x n
integer grid accounts
where accounts[i][j]
is the amount of money the ith
customer has in the jth
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
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:
Initialization: Initialize a variable maxWealth
to 0 (or a very small negative number to handle cases where all wealth values are negative).
Iteration: Iterate through each row (customer) of the accounts
array.
Wealth Calculation: For each customer, iterate through their bank accounts (inner loop) and sum up their money.
Maximum Update: Compare the current customer's wealth with maxWealth
. If the current customer's wealth is greater, update maxWealth
.
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.