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

Note: This problem is from LeetCode.
❌ Compiled
❌ Executed
❌ Correct
program main
    implicit none

    integer, parameter :: m = 2, n = 3
    integer, dimension(m, n) :: accounts
    integer :: i, j, wealth

    ! Example 1
    accounts = reshape([1, 2, 3, 3, 2, 1], shape=[m, n])
    write (*, '(a, i0)') 'Example 1: ', max_wealth(accounts)

    ! Example 2
    accounts = reshape([1, 5, 7, 3], shape=[m, n])
    write (*, '(a, i0)') 'Example 2: ', max_wealth(accounts)

    ! Example 3
    accounts = reshape([2, 8, 7, 7, 1, 3, 1, 9, 5], shape=[m, n])
    write (*, '(a, i0)') 'Example 3: ', max_wealth(accounts)

contains

    function max_wealth(accounts) result(wealth)
        implicit none
        integer, intent(in) :: accounts(:, :)
        integer :: i, j, wealth

        wealth = 0
        do i = 1, size(accounts, 1)
            do j = 1, size(accounts, 2)
                wealth = max(wealth, sum(accounts(i, :)))
            end do
        end do
    end function max_wealth
end program main
❌ Compiled
❌ Executed
❌ Correct
module wealth
  implicit none
contains
  function get_wealth(accounts) result(wealth)
    integer, intent(in) :: accounts(:, :)
    integer :: wealth, i, j

    wealth = 0
    do i = 1, size(accounts, 1)
      do j = 1, size(accounts, 2)
        wealth = max(wealth, sum(accounts(i, :)))
      end do
    end do
  end function get_wealth
end module wealth

program wealth_test
  use wealth
  implicit none
  integer, parameter :: m = 2, n = 3
  integer :: accounts(m, n) = reshape([1, 2, 3, 3, 2, 1], shape(accounts))
  integer :: wealth

  wealth = get_wealth(accounts)
  write (*, *) "Wealth: ", wealth

  accounts = reshape([1, 5, 7, 3, 2, 1, 9, 5], shape(accounts))
  wealth = get_wealth(accounts)
  write (*, *) "Wealth: ", wealth

  accounts = reshape([2, 8, 7, 7, 1, 3, 1, 9, 5], shape(accounts))
  wealth = get_wealth(accounts)
  write (*, *) "Wealth: ", wealth
end program wealth_test
🌐 Data from online sources
def maximumWealth(accounts):
    max_wealth = 0
    for customer in accounts:
        wealth = sum(customer)
        max_wealth = max(max_wealth, wealth)
    return max_wealth

The algorithm iterates through each customer in the given grid (accounts) and calculates their total wealth by summing the values in their bank accounts. After calculating the wealth for a customer, the algorithm checks if it is greater than the current maximum wealth, and if so, the maximum wealth gets updated to the new wealth value. After all iterations, the algorithm returns the maximum wealth found.

The approach is the same for each language, just with minor syntactical differences between them.

🌐 Data from online sources
int maximumWealth(vector<vector<int>>& accounts) {
    int max_wealth = 0;
    for (auto& customer : accounts) {
        int wealth = 0;
        for (int account : customer) {
            wealth += account;
        }
        max_wealth = max(max_wealth, wealth);
    }
    return max_wealth;
}

The algorithm iterates through each customer in the given grid (accounts) and calculates their total wealth by summing the values in their bank accounts. After calculating the wealth for a customer, the algorithm checks if it is greater than the current maximum wealth, and if so, the maximum wealth gets updated to the new wealth value. After all iterations, the algorithm returns the maximum wealth found.

The approach is the same for each language, just with minor syntactical differences between them.