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

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

相关推荐
一念&2 分钟前
每日一个C语言知识:C 头文件
c语言·开发语言·算法
Miraitowa_cheems4 小时前
LeetCode算法日记 - Day 88: 环绕字符串中唯一的子字符串
java·数据结构·算法·leetcode·深度优先·动态规划
B站_计算机毕业设计之家4 小时前
python电商商品评论数据分析可视化系统 爬虫 数据采集 Flask框架 NLP情感分析 LDA主题分析 Bayes评论分类(源码) ✅
大数据·hadoop·爬虫·python·算法·数据分析·1024程序员节
小白菜又菜5 小时前
Leetcode 1518. Water Bottles
算法·leetcode·职场和发展
长存祈月心5 小时前
Rust Option 与 Result深度解析
算法
杭州杭州杭州6 小时前
机器学习(3)---线性算法,决策树,神经网络,支持向量机
算法·决策树·机器学习
不语n7 小时前
快速排序(Quick Sort)详解与图解
数据结构·算法·排序算法·快速排序·双指针排序
电鱼智能的电小鱼7 小时前
基于电鱼 ARM 工控机的AI视频智能分析方案:让传统监控变得更聪明
网络·arm开发·人工智能·嵌入式硬件·算法·音视频
初学者,亦行者7 小时前
Rust性能优化:内存对齐与缓存友好实战
算法·rust