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();