题目
题解1
简单的sum
class Solution {
public int maximumWealth(int[][] accounts) {
int max=0;
for(int[] account:accounts){
int sum=0;
for(int money:account){
sum+=money;
}
max=sum>max?sum:max;
}
return max;
}
}
题解2
class Solution {
public int maximumWealth(int[][] accounts) {
int max = 0;
for (int[] a : accounts) {
max = Math.max(max, Arrays.stream(a).sum());
}
return max;
}
}
知识点
Arrays.stream
看了其他人的解法,发现Arrays.stream非常好用,关于Arrays.stream的用法可参考下面这位博主的文章,写的很详细
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/y_k_y/article/details/84633001l
关于生成Stream的类似于python列表生成器的方法以及生成随机数
tream<Integer> stream2 = Stream.iterate(0, (x) -> x + 2).limit(6);
stream2.forEach(System.out::println); // 0 2 4 6 8 10
Stream<Double> stream3 = Stream.generate(Math::random).limit(2);
Arrays.asList
List list = Arrays.asList(“a”,“b”,“c”);
注意:
(1)该方法将数组与List列表链接起来:当更新其一个时,另一个自动更新
(2)该方法适用于对象型数据的数组,不适用于基本数据类型的数组
(3)不支持add()、remove()、clear()等方法
所以该方法适合用来做遍历
list.forEach(System.out::println);
可看作是 list.forEach(e -> System.out.println(e));的简写,
这里使用的双冒号::的方法就是方法引用的一种形式,主要就是用来偷懒hh,再举个例子:
表达式:
person -> person.getAge();
可以替换成
Person::getAge
这种情况一般是在函数不需要写参数item也知道如何使用item的情况。
比如e -> System.out.println(e);person -> person.getAge();
System.out::println就是指System类的静态数据成员out的println方法
详情可看这位博主:
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_36360308/article/details/108329887
注意这里是Java8带来的Lambda函数写法带来的结果,关于lambda可看这位博主的文章,强烈推荐掌握:
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_37176126/article/details/81273195
lambda
常用的几个lambda写法
//map变换后求和
double ans = list.stream().map(x -> x+2)
.reduce((sum,x) -> sum + x).get();
System.out.println(ans);
//筛选后转为list并输出
ans.stream().filter(x -> x > 5)
.collect(Collectors.toList())
.forEach(System.out::println);
//求最大值
Integer max = list.stream().max(Integer::compareTo).get();
reduce
给累积器赋初值,然后遍历目标集合,使得每一个元素与累积器做运算,得到的结果刷新累积器,遍历完成,返回累积器中的结果。这就是reduce 模式。
int totalAge = ages.stream().reduce((sum,age) -> sum + age).get();
//带初始值的计算
int totalAge1 = ages.stream().reduce(0,(sum,age) -> sum+age);