leetcode 122 买股票的最佳时机||
简单题
class Solution:
def maxProfit(self, prices: List[int]) -> int:
result = 0
for i in range(1, len(prices)):
profit = prices[i] - prices[i - 1]
result += max(profit, 0)
return result
leetcode 55 跳跃游戏
初步理解贪心是对遍历的剪枝
class Solution:
def canJump(self, nums: List[int]) -> bool:
cover = 0
if len(nums) < 2 : return True
for i in range(len(nums)):
if i <= cover:
cover = max(i + nums[i], cover)
if cover >= len(nums) - 1:
return True
return False
leetcode 45 跳跃游戏||
好难 摸不到规律
class Solution:
def jump(self, nums: List[int]) -> int:
if len(nums) == 1:
return 0
cur_distance, next_ditance, ans = 0, 0, 0
for i in range(len(nums)):
next_ditance = max(next_ditance, nums[i] + i)
if i == cur_distance:
cur_distance = next_ditance
ans += 1
if next_ditance >= len(nums) - 1:
break
return ans
leetcode 1005 k次取反后最大化的数组和
class Solution:
def largestSumAfterKNegations(self, nums: List[int], k: int) -> int:
nums.sort(key = lambda x: abs(x), reverse = True)
for i in range(len(nums)):
if nums[i] < 0 and k > 0:
nums[i] *= -1
k -= 1
if k % 2 == 1:
nums[-1] *= -1
return sum(nums)
关于贪心算法,从上述题目中并没有体会到其特殊之处,对它的初步印象还是暴力解法的优化
306

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



