122.买卖股票的最佳时机Ⅱ
不看答案还是太难想这种题了。。。只能多积累
class Solution:
def maxProfit(self, prices: List[int]) -> int:
value=[];res=0
for i in range(1,len(prices)):
value.append(prices[i]-prices[i-1])
for i in range(len(value)):
if value[i]>0:
res+=value[i]
return res
55.跳跃游戏
class Solution:
def canJump(self, nums: List[int]) -> bool:
index=0;i=0
final_index=len(nums)-1
while i<=index:
index=max(index,i+nums[i])
if index>=final_index:
return True
i+=1
return False
45.跳跃游戏Ⅱ
class Solution:
def jump(self, nums: List[int]) -> int:
if len(nums)==1:
return 0
min_step=0
res=0;i=0
final_index=len(nums)-1
current_max=0 #当前能到达的最远距离
while i <= current_max:
res=max(res,i+nums[i])
if i==current_max: #到达能到达的最远距离时才增加步数
min_step+=1
current_max=res
if res>=final_index:
break
i+=1
return min_step
1005.k次取反后最大化的数组和
class Solution:
def largestSumAfterKNegations(self, nums: List[int], k: int) -> int:
"""
先给数组排序,看元素正负,如果元素均非负数,就把最小的那个元素一直变
如果最小元素有负,就给他变一次,然后重新排序
如果最小元素是0,就一直变0就行
"""
i=0;great_sum=0
nums.sort()
while i < k:
if nums[0]>=0:
nums[0]=-nums[0]
else:
nums[0]=-nums[0]
nums.sort()
i+=1
great_sum=sum(nums)
return great_sum