今天的题都比较难想到
122. Best Time to Buy and Sell Stock II
这道题的贪心思路就是低买高卖
Way1:
每次算当前时间与之前的差值,只要是正的就加到最终结果里面去
class Solution:
def maxProfit(self, prices: List[int]) -> int:
res=0
for i in range(1,len(prices)):
dif=prices[i]-prices[i-1]
if dif>0:
res+=dif
return res
55. Jump Game
这道题实际上就是要考虑清楚是在算每次的最大取值范围
Way1:
每次算最大能到哪,如果当前的i在这个范围内就继续算最大能到哪,要是所有的范围都不能到达最后的点则是false
class Solution:
def canJump(self, nums: List[int]) -> bool:
cover=0
if len(nums)==1:
return True
for i in range(len(nums)):
if i<=cover:
cover=max(cover,i+nums[i])
if cover>=len(nums)-1:
return True
return False
45. Jump Game II
这道题同样是转成求范围,但是需要当前的最大范围以及之前的端点得最大范围.每当达到端点时则需要step+1
class Solution:
def jump(self, nums: List[int]) -> int:
pre=0
cur=0
res=0
for i in range(len(nums)-1):
cur=max(cur,i+nums[i])
if i==pre:
pre=cur
res+=1
return res