376. 摆动序列7
通过山坡法判断有几个峰值,即
峰值为:
- prediff > 0&& curdiff < 0 或者
prediff < 0&& curdiff > 0
本题要考虑三种情况:
(1)上下坡中有平坡 即:允许prediff = 0
(2)数组首尾两端
(3)单调坡中有平坡
53. 最大子数组和
遇到负数时不跳过,当count小于0时才重新置零计数
45. 跳跃游戏 II
如果能走到,那步数加1
if(maxSize >= nums.length - 1){
step++;
return step;
}
//如果能走到边界了,那必须向前走一步
if(i == curSize){
step++;
curSize = maxSize;
}
1005. K 次取反后最大化的数组和
1.思路
按绝对值排序,负数全变为正数,k还剩的话找最小的正数一直薅
2.代码编写
(1)绝对值排序
nums = IntStream.of(nums)
.boxed()
.sorted((o1, o2) -> Math.abs(o2) -Math.abs(o1)) //绝对值大的放在前面
.mapToInt(Integer::intValue).
toArray();
-
创建一个int型的输入流stream<Integer> 是Integer类型的流;boxed的作用就是将int类型的stream转成了Integer类型的Stream;toArray把map<Integer>集合转成int类型,再转换成array数组。
(2)数组累加
-
Arrays.stream(nums).sum();
-
860. 柠檬水找零
- 分5、10、20的情况,当20时使用贪心:
(1)先用10块,再用5块
(2)用3张5块
(3)其他情况为false
406. 根据身高重建队列
升序排完队以后,插入过程使用链表:
for (int[] p : people) {
que.add(p[1],p);
}
//Linkedlist.add(index, value),会将value插入到指定index裡。
比如升序后:
[7,0],[7,1],[6,1],[5,0]…每一个都是p[]
- 把[7,0]放在p[1]=0
- 把[7,1]放在p[1]=1
- 把[6,1]放在p[1]=1,即:
Queue = [7,0],[6,1],[7,1]
4.把[5,0]放在p[1]=0,即:
Queue = [5,0],[7,0],[6,1],[7,1]…