Example 5
最富有客户的资产总量
题目概述:是给你一个 m x n 的整数网格 accounts ,其中 accounts[i][j] 是第 i 位客户在第 j 家银行托管的资产数量。返回最富有客户所拥有的 资产总量 。
客户的 资产总量 就是他们在各家银行托管的资产数量之和。最富有客户就是 资产总量 最大的客户。
示例 1:
输入:accounts = [[1,2,3],[3,2,1]]
输出:6
解释:
第 1 位客户的资产总量 = 1 + 2 + 3 = 6
第 2 位客户的资产总量 = 3 + 2 + 1 = 6
两位客户都是最富有的,资产总量都是 6 ,所以返回 6 。
示例 2:
输入:accounts = [[1,5],[7,3],[3,5]]
输出:10
解释:
第 1 位客户的资产总量 = 6
第 2 位客户的资产总量 = 10
第 3 位客户的资产总量 = 8
第 2 位客户是最富有的,资产总量是 10
示例 3:
输入:accounts = [[2,8,7],[7,1,3],[1,9,5]]
输出:17
解题思路:二位数组中的每以个元素代表一位客户在各个银行的资产,分别计算每位客户在各家银行托管的资产数量之和,返回这些资产总量的最大值。
解题步骤:
1. 定义变量maxWealth记录当前时刻最大的资产总量,初始值设为int型的最小值。
2. 增强for循环中遍历二维数组,使用Arrays的stream流中的sum方法,将每个元素(一位数组)求和,并与当前时刻最大的资产总量进行大小比较,将最大值设为新的最大资产总量,用以下一轮比较判断。
3. 循环结束后,全部比较完成,maxWealth代表所有客户中的资产最大值,并将其返回。
示例代码如下:
public class MaxMoney { /** * 给你一个 m x n 的整数网格 accounts ,其中 accounts[i][j] 是第 i 位客户在第 j 家银行托管的资产数量。返回最富有客户所拥有的 资产总量 。 * <p> * 客户的 资产总量 就是他们在各家银行托管的资产数量之和。最富有客户就是 资产总量 最大的客户。 * <p> * * <p> * 示例 1: * <p> * 输入:accounts = [[1,2,3],[3,2,1]] * 输出:6 * 解释: * 第 1 位客户的资产总量 = 1 + 2 + 3 = 6 * 第 2 位客户的资产总量 = 3 + 2 + 1 = 6 * 两位客户都是最富有的,资产总量都是 6 ,所以返回 6 。 * 示例 2: * <p> * 输入:accounts = [[1,5],[7,3],[3,5]] * 输出:10 * 解释: * 第 1 位客户的资产总量 = 6 * 第 2 位客户的资产总量 = 10 * 第 3 位客户的资产总量 = 8 * 第 2 位客户是最富有的,资产总量是 10 * 示例 3: * <p> * 输入:accounts = [[2,8,7],[7,1,3],[1,9,5]] * 输出:17 * * <p> * 提示: * <p> * m == accounts.length * n == accounts[i].length * 1 <= m, n <= 50 * 1 <= accounts[i][j] <= 100 * <p> * 来源:力扣(LeetCode) * 链接:https://leetcode.cn/problems/richest-customer-wealth */ public static void main(String[] args) { int[][] accounts = {{1, 2, 3}, {3, 2, 1}}; MaxMoney mm = new MaxMoney(); System.out.println(mm.maximumWealth(accounts)); // 6 } /** * 个人 * @param accounts * @return */ /* public int maximumWealth(int[][] accounts) { int maxMoney = 0; for (int i = 0; i < accounts.length; i++) { int money = 0; for (int j = 0; j < accounts[i].length; j++) { money += accounts[i][j]; } if (maxMoney < money) maxMoney = money; } return maxMoney; }*/ /** * 官方 * * @param accounts * @return */ public int maximumWealth(int[][] accounts) { int maxWealth = Integer.MIN_VALUE; System.out.println("maxWealth:" + maxWealth); for (int[] account : accounts) { maxWealth = Math.max(maxWealth, Arrays.stream(account).sum()); } return maxWealth; } }