第二十八天:贪心算法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

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

相关推荐
别动我齐刘海28 分钟前
ROS2 Jazzy + C++ 实战路线——进阶学习3
c++·人工智能·vscode·python·算法·机器学习·机器人
zhangfeng113334 分钟前
《从“人工适配“到“智能生成“:KernelSwift 跨国产芯片算子迁移全栈方案解读》 —— 强调范式跃迁和跨硬件属性,适合偏架构分析的写法
人工智能·算法·华为·ai编程·npu
0+11137 分钟前
算法 --滑动窗口
c++·算法·leetcode
reikocao1 小时前
大场景下 Hessian 特征值放大与退化检测
算法
hetao17338371 小时前
2026-09-18 hetao1733837 的刷题记录
c++·算法
wuyk5552 小时前
21.计数排序:不用比较的“空间换时间”排序算法
python·算法·排序算法
Rabitebla2 小时前
【Linux系统编程】 指令(二):一条路径是怎么定位到文件的
linux·c++·笔记·学习·算法
库玛西2 小时前
数据结构与算法之美:树、森林与二叉树全解析
c语言·数据结构·笔记·考研·算法·学习方法
木井巳2 小时前
【记忆化搜索】最长递增子序列
java·算法·leetcode·深度优先·剪枝·推荐算法
东方护航数据恢复(深圳)2 小时前
本地小算力设备数据恢复经典案例实操全解_东方护航数据恢复深圳店
大数据·服务器·算法·ai·gpu算力