买卖股票的最佳时机2
力扣题目链接
局部最优:买卖股票遇到正数,收集下来
全局最优: 收集到最大利润
var maxProfit = function(prices) {
let res=0
for(let i=1;i<prices.length;i++){
res +=Math.max(prices[i]-prices[i-1],0)
}
return res
};
跳跃游戏
力扣题目
思路:
局部最优解:每次取最大跳跃步数(取最大覆盖范围),整体最优解:最后得到整体最大覆盖范围,看是否能到终点
var canJump = function(nums) {
let cover=0
if(nums.length===1) return true
for(let i=0;i<=cover;i++){
cover=Math.max(i+nums[i],cover)
if(cover>=(nums.length-1)){
return true
}
}
return false
};
跳跃游戏2
力扣题目链接
思路:
同样转换为覆盖范围,而不是纠结跳几步
需要统计两个覆盖范围,当前这一步的最大覆盖和下一步最大覆盖。
var jump = function(nums) {
let next=0
let cur=0
let res=0
for(let i=0;i<nums.length;i++){
next=Math.max(i+nums[i],next)
if(i===cur ){//
if( cur !== nums.length-1){
res++
cur=next
if(cur >=nums.length-1){
break
}
}else{
break
}
}
}
return res
};