第二十八天:贪心算法part02(第八章)

1.买卖股票的最佳时机2

122. 买卖股票的最佳时机 II - 力扣(LeetCode)

思路:

复制代码
class Solution:
    def maxProfit(self, prices: List[int]) -> int:

        #举例子:第1天买入,第3天卖出可以写成:p[2]-p[0] = p[2]-p[1] + p[1]-p[0]
        #列出每天的利润
        result = 0
        curDiff = 0


        for i in range(1, len(prices)):
            curDiff = prices[i] - prices[i-1]
            if curDiff >= 0:
                result += curDiff

        return result

2.跳跃游戏

55. 跳跃游戏 - 力扣(LeetCode)

思路:

复制代码
class Solution:
    def canJump(self, nums: List[int]) -> bool:
        #每个元素代表你在该位置可以跳的最大长度
        #判断当前元素的覆盖面能否达到最后一个下标
        cover = 0
        if len(nums) == 1:
            return True
        
        for i in range(len(nums)-1):
            #当前下标 i 如果已经超出了你能到达的最远范围 cover,说明你走不到这一步,直接返回 False
            if i > cover:
                return False
            cover = max(i + nums[i], cover)
            #如果你能跳到或超过最后一个元素,说明可以到达终点,返回 True
            if cover >= len(nums) - 1:
                return True
        return False

3.跳跃游戏II:有点绕,需要多理解!

45. 跳跃游戏 II - 力扣(LeetCode)

思路:

复制代码
class Solution:
    def jump(self, nums: List[int]) -> int:
        if len(nums) == 1:
            return 0
        cur = 0
        next = 0
        result = 0 #记录结果

        for i in range(len(nums)):
            next = max(i + nums[i], next)
            if i == cur:
                result += 1
                cur = next
                if cur >= len(nums) - 1:
                    break
        return result

4.K次取反后最大化的数组和:这题相比之下简单许多

1005. K 次取反后最大化的数组和 - 力扣(LeetCode)

复制代码
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: #如果k有剩余,但为什么是取余呢,因为如果是偶数的话可以消掉
            nums[-1] *= -1

        result = sum(nums)
        return result

今天结束啦!明天继续加油

相关推荐
mit6.8243 分钟前
序列化|质数筛|tips|回文dp
算法
rgeshfgreh8 分钟前
C++字符串处理:STL string终极指南
java·jvm·算法
Protein_zmm40 分钟前
【算法基础】二分
算法
Lips6111 小时前
2026.1.11力扣刷题笔记
笔记·算法·leetcode
charlie1145141911 小时前
从 0 开始的机器学习——NumPy 线性代数部分
开发语言·人工智能·学习·线性代数·算法·机器学习·numpy
执携2 小时前
算法 -- 冒泡排序
数据结构·算法
寻星探路3 小时前
【算法专题】滑动窗口:从“无重复字符”到“字母异位词”的深度剖析
java·开发语言·c++·人工智能·python·算法·ai
wen__xvn3 小时前
代码随想录算法训练营DAY14第六章 二叉树 part02
数据结构·算法·leetcode
Ka1Yan3 小时前
[数组] - 代码随想录(2-6)
数据结构·算法·leetcode
漫随流水4 小时前
leetcode算法(104.二叉树的最大深度)
数据结构·算法·leetcode·二叉树