Question

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

Algorithm-1

给定数组accounts,返回行总和最大的值。须判断边界条件,使用vector的库函数accumulate。解法复杂度为O(n^2)。

Code-1

C++

class Solution {
public:
    int maximumWealth(vector<vector<int>>& accounts) {
        if (accounts.size() < 1 || accounts[0].size() < 1)
            return 0;
        int customer_num = accounts.size();
        int maximum = 0, cur_sum = 0;
        for (int i = 0; i < customer_num; i++)
        {
            cur_sum = accumulate(accounts[i].begin(), accounts[i].end(), 0);
            if (cur_sum > maximum)
                maximum = cur_sum;
        }
        return maximum;
    }
};

Algorithm-2

给定一个二维数组A,A[i]代表客户i在各个银行的资产。问总资产最多的客户的总资产是多少。 直接统计。代码如下:

Code-2

Java

public class Solution {
    public int maximumWealth(int[][] accounts) {
        int res = 0;
        for (int[] account : accounts) {
            int asset = 0;
            for (int i = 0; i < account.length; i++) {
                asset += account[i];
            }
        
            res = Math.max(res, asset);
        }
    
        return res;
    }
}
        
        return res;
    }
}