122.买卖股票的最佳时机II
思路:只有前一天与后一天的利润为正时,才将其加入总利润。
55. 跳跃游戏
思路:找最大覆盖范围
出错点:数组的遍历,遍历范围应该是覆盖范围内
45.跳跃游戏II
思路:
局部最优:当前可移动距离尽可能多走,如果还没到终点,步数再加一。
整体最优:一步尽可能多走,从而达到最少步数。
需要统计两个覆盖范围,当前这一步的最大覆盖和下一步最大覆盖。
class Solution {public int jump(int[] nums) {if(nums.length==1) return 0;int cur=0;int n=0;int next = 0;for(int i=0;i<=nums.length;i++){int t = i + nums[i];next = Math.max(t,next);if(i==cur){cur=next;n++;if(cur>=nums.length-1) break;}}return n;}
}
1005.K次取反后最大化的数组和
思路:如果有负数则对绝对值最大的负数进行取反,如果全为非负数则对最小的数重复取反。
java中的排序(根据绝对值从大到小排序):
nums = IntStream.of(nums).boxed().sorted((o1, o2) -> Math.abs(o2) - Math.abs(o1)).mapToInt(Integer::intValue).toArray();