代码随想录算法训练营第三十二天
122.买卖股票的最佳时机II
代码
# !/usr/bin/env python
# -*- coding:utf-8 -*-
# @Time : 2022.11
# @Author : hello algorithm!
# @Note : https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/
from typing import List
class Solution:
def maxProfit(self, prices: List[int]) -> int:
max_sum = 0
for i in range(1, len(prices)):
diff = prices[i] - prices[i - 1]
if diff >= 0:
max_sum += diff
return max_sum
if __name__ == '__main__':
pass
55. 跳跃游戏
代码
# !/usr/bin/env python
# -*- coding:utf-8 -*-
# @Time : 2022.11
# @Author : hello algorithm!
# @Note : https://leetcode.cn/problems/jump-game/
from typing import List
class Solution:
def canJump(self, nums: List[int]) -> bool:
if len(nums) == 1:
return True
max_index = 0
for i in range(len(nums)):
max_index = max(max_index, nums[i] + i)
if max_index <= i:
return False
if max_index >= len(nums) - 1:
return True
return False
if __name__ == '__main__':
pass
45.跳跃游戏II
代码
# !/usr/bin/env python
# -*- coding:utf-8 -*-
# @Time : 2022.11
# @Author : hello algorithm!
# @Note : https://leetcode.cn/problems/jump-game-ii/
from typing import List
class Solution:
def jump(self, nums: List[int]) -> int:
max_index = 0
num = 0
if len(nums) == 1:
return 0
i = 0
while i < len(nums):
num += 1
max_index = max(nums[i] + i, max_index)
if max_index >= len(nums) - 1:
break
temp_max = 0
j = i + 1
while j < max_index + 1:
temp_max = max(nums[j] + j, temp_max)
if nums[j] + j >= temp_max:
temp_max = nums[j] + j
i = j
j += 1
return num
if __name__ == '__main__':
nums = [10,9,8,7,6,5,4,3,2,1,1,0]
s = Solution()
print(s.jump(nums))