最富有客户的资产总量
最富有客户的资产总量
给你一个 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;
}
}
参考力扣