最富有客户的资产总量

最富有客户的资产总量

给你一个 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 。

(1)使用stream流求解:

注意这里用到了 二维数组的 for-each循环

以及在JDK8.0之后的 Arrays.stream()流

class Solution {
    public int maximumWealth(int[][] accounts) {
      //定义一个最大的财富maxWealth 
        int maxWealth = Integer.MIN_VALUE;  //注意这里最后的MIN_VALUE是Inegeter中的类型,表示最大值的范围
      //对二维数组采用for-each 的方式进行遍历
        for(int[] account : accounts){
          //这里用到了Arrays.stream()
            maxWealth = Math.max(maxWealth, Arrays.stream(account).sum());
        }
        return maxWealth;

    }
}

(2)使用for循环:

暴力破解 使用两层for循环 时间复杂度较高

class Solution {
    public int maximumWealth(int[][] accounts) {
        int money = 0;
        //使用两层for循环遍历二维数组
        for(int i = 0; i < accounts.length; i++){
            int ans = 0;
            for(int j = 0; j < accounts[i].length; j++){
                ans += accounts[i][j]; //对每一行的数进行求和操作
            }
            //在两者之间找到最大的值然后输出最大的值
            money = Math.max(money, ans);
        }
        return money;

    }
}

(3)使用for-each:

使用两层for-each 循环进行解答

class Solution {
    public int maximumWealth(int[][] accounts) {
        int money =0; //先定义一个总值
       for(int[] account : accounts){  //对二维数组进行for-each 循环的遍历
           int ans = 0;
           for(int sss : account){
               ans += sss;
           }
           money = Math.max(money, ans); //从两者之间选出最大值,然后进行返回
       }
       return money;

    }
}

参考力扣

posted @ 2022-05-22 22:58  Root-RockMan  阅读(50)  评论(0编辑  收藏  举报