買賣股票的最佳時(shí)機(jī)2
力扣題目鏈接
局部最優(yōu):買賣股票遇到正數(shù)瞳步,收集下來(lái)
全局最優(yōu): 收集到最大利潤(rùn)
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
};
跳躍游戲
力扣題目
思路:
局部最優(yōu)解:每次取最大跳躍步數(shù)(取最大覆蓋范圍)腰奋,整體最優(yōu)解:最后得到整體最大覆蓋范圍,看是否能到終點(diǎn)
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
力扣題目鏈接
思路:
同樣轉(zhuǎn)換為覆蓋范圍嘀倒,而不是糾結(jié)跳幾步
需要統(tǒng)計(jì)兩個(gè)覆蓋范圍局冰,當(dāng)前這一步的最大覆蓋和下一步最大覆蓋。
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
};