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

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

相关推荐
恣艺1 小时前
LeetCode 132:分割回文串 II
算法·leetcode·代理模式
LZQqqqqo3 小时前
C# 中生成随机数的常用方法
java·算法·c#
葵续浅笑3 小时前
LeetCode - 合并两个有序链表 / 删除链表的倒数第 N 个结点
java·算法·leetcode
哪 吒7 小时前
【2025C卷】华为OD机试九日集训第3期 - 按算法分类,由易到难,提升编程能力和解题技巧
python·算法·华为od·华为od机试·2025c卷
机器学习之心HML8 小时前
PSO-TCN-BiLSTM-MATT粒子群优化算法优化时间卷积神经网络-双向长短期记忆神经网络融合多头注意力机制多特征分类预测/故障诊断Matlab实现
神经网络·算法·cnn
数据与人工智能律师8 小时前
智能合约漏洞导致的损失,法律责任应如何分配
大数据·网络·人工智能·算法·区块链
天天开心(∩_∩)8 小时前
代码随想录算法训练营第三十九天
算法
weisian1519 小时前
力扣经典算法篇-41-旋转图像(辅助数组法,原地旋转法)
算法·leetcode·职场和发展
朝朝又沐沐10 小时前
算法竞赛阶段二-数据结构(40)数据结构栈的STL
开发语言·数据结构·c++·算法
2501_9277730710 小时前
数据结构——单向链表
数据结构·算法