122.买卖股票的最佳时机II
因为有预知能力,赚再买就行了。
class Solution:
def maxProfit(self, prices: List[int]) -> int:
return sum(prices[i] - prices[i - 1] if prices[i] > prices[i - 1] else 0 for i in range(1, len(prices)))
55. 跳跃游戏
每一个index都更新一下能跳最远的位置。
class Solution:
def canJump(self, nums: List[int]) -> bool:
farthest = 0
for i in range(len(nums)):
if farthest >= len(nums) - 1:
return True
farthest = max(farthest, i + nums[i])
if farthest < i + 1:
return False
45.跳跃游戏II
使用cur管理一下目前这一跳能到的地方,farthest表示历史能到的最远距离,i到cur之后更新cur,并且完成一次跳跃。cur能到末尾,再跳一次就到了。
class Solution:
def jump(self, nums: List[int]) -> int:
farthest = 0
cur = nums[0]
res = 0
for i in range(len(nums) - 1):
farthest = max(nums[i] + i, farthest)
if i == cur:
res += 1
cur = farthest
if cur >= len(nums) - 1:
return res + 1
return res
1005.K次取反后最大化的数组和
class Solution:
def largestSumAfterKNegations(self, nums: List[int], k: int) -> int:
nums.sort(key = lambda x: abs(x))
i = 0
for i in range(len(nums) - 1, -1, -1):
if k == 0:
break
if nums[i] < 0:
nums[i] *= -1
k -= 1
if k % 2 == 1:
nums[0] *= -1
return sum(nums)
1165

被折叠的 条评论
为什么被折叠?



