贪心算法的核心,就是用局部最优去代替全局最优。

一般的步骤就是去试思路,然后举反例,如果举不出反例,基本可以看作是正确的方法。

121. 买卖股票的最佳时机(Best Time to Buy and Sell Stock)

难度: 简单
题目描述:
给定一个数组,它的第 i 个元素是某支股票第 i 天的价格。你可以选择某一天买入该股票,并在未来某一天卖出股票,求最大利润。你不能在买入股票之前卖出股票。

示例:

  • 输入:[7, 1, 5, 3, 6, 4]

  • 输出:5
    解释: 在第 2 天(价格 = 1)买入,在第 5 天(价格 = 6)卖出,最大利润为 6 - 1 = 5

  • 输入:[7, 6, 4, 3, 1]

  • 输出:0
    解释: 在这个情况下, 没有交易发生, 所以最大利润是 0

class Solution:def maxProfit(self, prices: List[int]) -> int:minprice = float('inf')res = 0for i in range(len(prices)):if prices[i] < minprice:minprice = prices[i]res = max(res,prices[i] - minprice)return res

这道题可以用折线图来表示:

 

55.  跳跃游戏(Jump Game)

难度: 中等
题目描述:
给定一个非负整数数组 nums,其中每个元素表示你在该位置可以跳跃的最大长度。判断你是否能够从数组的第一个位置跳到最后一个位置。你可以跳跃的最大长度随时变化,但每次只能跳跃一次。

示例:

  • 输入:[2, 3, 1, 1, 4]

  • 输出:true
    解释: 从第 1 个位置开始,你可以跳跃到第 2 个位置,再跳跃到第 4 个位置,从而到达最后一个位置。

  • 输入:[3, 2, 1, 0, 4]

  • 输出:false
    解释: 无论你从哪个位置开始,都无法到达最后一个位置。

class Solution:def canJump(self, nums: List[int]) -> bool:cover = 0 for i in range(len(nums)):if i > cover:return Falsecover = max(cover,i+nums[i])return True

45. 跳跃游戏 II(Jump Game II)

难度: 中等
题目描述:
给定一个非负整数数组 nums,其中每个元素表示你在该位置可以跳跃的最大长度。你需要找到从数组的第一个位置跳到最后一个位置的最小跳跃次数。

示例:

  • 输入:[2, 3, 1, 1, 4]

  • 输出:2
    解释: 最小跳跃次数是 2。你可以从第 1 个位置跳到第 2 个位置,再跳跃到第 5 个位置。

  • 输入:[1, 2, 3, 4, 5]

  • 输出:3
    解释: 最小跳跃次数是 3。你可以从第 1 个位置跳到第 2 个位置,再跳跃到第 4 个位置,最后到达最后一个位置。

class Solution:def jump(self, nums: List[int]) -> int:cover = 0jump = 0cur_end = 0for i in range(len(nums)-1):cover = max(cover,i+nums[i])if i == cur_end:jump += 1cur_end = coverreturn jump

这道题的与上一道题的不同点在于,这道题一定能够到达终点。

cover依然代表覆盖的最大范围。

jump代表次数,而cur_end代表当前这一跳的最远距离,一旦到达这一跳最远距离,就需要往下一跳去了,这时候就要更新下一跳的最远距离为当前的cover最远。

763. 划分字母区间(Partition Labels)

难度: 中等
题目描述:
给定一个字符串 S,将字符串分成尽可能多的部分,使得每个字母只出现在一个部分。返回一个表示每个部分的大小的列表。

示例:

  • 输入:"ababcbacadefegdehijhklij"

  • 输出:[9, 7, 8]
    解释:
    按照如下划分:

    • "ababcbaca" 包含了字母 'a''b''c'

    • "defegde" 包含了字母 'd''e''f''g'

    • "hijhklij" 包含了字母 'h''i''j''k''l'

  • 输入:"eccbbbbdec"

  • 输出:[10]
    解释: 字符串只有一个区间。

class Solution:def partitionLabels(self, s: str) -> List[int]:# 记录每个字符最后的位置last = {c:i for i,c in enumerate(s)}res = []start = end = 0for i,c in enumerate(s):end = max(end,last[c])if end == i:res.append(end - start +1)start = i + 1return res

有个式子需要记住:

      last = {c:i for i,c in enumerate(s)}

遍历一遍之后,记录了每个字符的最后出现的位置。

和跳跃位置2一样,到达当前最远了,就应该更新了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/98722.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/98722.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/98722.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从齿轮到智能:机器人如何重塑我们的世界【科普类】

新晋码农一枚&#xff0c;小编会定期整理一些写的比较好的代码和知识点&#xff0c;作为自己的学习笔记&#xff0c;试着做一下批注和补充&#xff0c;转载或者参考他人文献会标明出处&#xff0c;非商用&#xff0c;如有侵权会删改&#xff01;欢迎大家斧正和讨论&#xff01;…

python超市购物 2025年6月电子学会python编程等级考试一级真题答案解析

python超市购物 2025年6月 python编程等级考试一级真题 博主推荐 所有考级比赛学习相关资料合集【推荐收藏】 1、Python比赛 信息素养大赛Python编程挑战赛 蓝桥杯python选拔赛真题详解

浅谈代理流程自动化 (APA)

一、什么是APA Agentic Process Automation (APA)APA 利用大型语言模型 &#xff08;LLM&#xff09; 自动执行复杂的动态工作流程。它可以自主构建、执行和调整工作流程&#xff0c;同时将人员干预降至最低。与依赖基于规则的系统的传统机器人流程自动化 &#xff08;RPA&…

LeetCode - 和为K的子数组 / 爬楼梯

​欢迎光临小站&#xff1a;致橡树 和为K的子数组 给你一个整数数组 nums 和一个整数 k &#xff0c;请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,1], k 2 输出&#xff1a;2示例…

day40 SQLite3单词查询程序设计与实现

day40 SQLite3单词查询程序设计与实现 核心知识点 SQLite3 C接口应用&#xff1a;使用sqlite3_open、sqlite3_exec等函数操作数据库回调函数机制&#xff1a;通过回调函数处理查询结果集SQL语句构建&#xff1a;动态生成SELECT、INSERT等SQL语句事务处理&#xff1a;使用BEGIN …

GitHub 热榜项目 - 日榜(2025-09-08)

GitHub 热榜项目 - 日榜(2025-09-08) 生成于&#xff1a;2025-09-08 统计摘要 共发现热门项目&#xff1a;17 个 榜单类型&#xff1a;日榜 本期热点趋势总结 本期GitHub热榜呈现三大技术趋势&#xff1a;AI智能体与LLM应用持续爆发&#xff08;emcie-co/parlant、coleam00…

设计模式-工厂方法原型模板方法外观

设计模式概述 - 工厂方法 & 原型 & 模板方法 & 外观 工厂方法模式简述 工厂方法模式&#xff08;Factory Method Pattern&#xff09;是一种创建型设计模式&#xff0c;它定义了一个用于创建对象的接口&#xff0c;但由子类决定实例化哪个类。工厂方法将类的实例化…

推动检测认证行业迈向智能化 AITIC一体机发布会在京举办

来源&#xff1a;新华社客户端国家市场监督管理总局认证认可技术研究中心(简称“认研中心”)近日联合技术合作伙伴在北京举办AITIC软硬件一体机发布会。据了解&#xff0c;“AITIC一体机”是专为检测认证行业设计的智能硬件&#xff0c;提供低成本的本地化部署方案&#xff0c;…

权限即数据:企业系统中的字段级访问控制架构实战(β=0.6)

摘要 这篇文章介绍了一个企业系统中的字段权限解析方案&#xff0c;通过规则表与命中记录表&#xff08;biz_rule_hit&#xff09;联动&#xff0c;实现对业务数据的动态权限控制。流程包括替换用户上下文变量、记录命中规则、查询业务数据并关联命中信息&#xff0c;最终在内存…

Python爬虫实战:研究Specialty Plots模块,构建空气质量监测数据采集和分析系统

1. 引言 1.1 研究背景 随着全球城市化进程的加速和工业的快速发展,空气质量问题已成为影响人类健康和生态环境的重要因素。世界卫生组织数据显示,全球超过 90% 的人口生活在空气质量超标的环境中,空气污染每年导致约 700 万人过早死亡。准确、及时地获取和分析空气质量数据…

字典树算法

一、什么是Trie&#xff1f; Trie&#xff08;发音为"try"&#xff09;&#xff0c;也称为字典树、前缀树&#xff0c;是一种多叉树结构&#xff0c;专门用于高效存储和检索字符串集合。其核心特点是共享字符串的公共前缀&#xff0c;从而大幅减少冗余存储&#xff0…

Laya使用VideoNode动态加载视频,可以自定义播放视频此处以及位置

export class VideoCommand {video: Laya.VideoNode;public duration: number 0;/*** param videoPos 视频位置* param videoSize 视频大小*/public constructor(videoPos: Laya.Vector2, videoSize: Laya.Vector2) {this.video new Laya.VideoNode;//添加到舞台 1是场景中的…

yum localinstall安装本地包

yum localinstall 是一个用于安装本地 RPM 包并自动处理依赖关系的命令。当你有一个或多个本地的 RPM 包需要安装,又希望 yum 能帮你解决可能存在的依赖问题时,这个命令就非常有用。下面我会详细解释它的用法和注意事项。 🖥️ 命令基本用法 yum localinstall 命令的基本…

LeetCode 面试经典 150 题:轮转数组(三次翻转法详解 + 多解法对比)

在数组类算法题中&#xff0c;“轮转数组” 是一道考察 “原地操作” 与 “逻辑转换” 能力的经典题目。所谓 “轮转”&#xff0c;是指将数组元素向右移动指定步数&#xff0c;且超出数组长度的元素需 “循环” 到数组开头。这道题的最优解 ——三次翻转法&#xff0c;能以 O …

网络编程---TCP

1.TCP&#xff1a;传输控制协议&#xff0c;位于传输层2.TCP的特性&#xff1a;a.使用流式套接字&#xff0c;数据连续&#xff0c;有顺序b.TCP是可靠传输&#xff0c;有有应答机制ACK&#xff0c;即收到数据后会明确告知发送方已收到数据&#xff1b;若发送方没有在预计时间收…

对计算机网络模型的理解

文章目录 目录 前言 一、Internet 的核心特点 二、Internet 的组成结构 1. 硬件基础&#xff1a;网络运行的 “物理载体” 2. 软件支撑&#xff1a;网络运行的 “功能桥梁” 3. 协议规则&#xff1a;网络运行的 “通用语言” 三、OSI 七层参考模型&#xff08;理论标准&…

每日一算:分发糖果

在算法面试中&#xff0c;“分发糖果” 是一道经典的贪心算法应用题&#xff0c;核心考察对 “局部最优推导全局最优” 的理解。本文将从问题分析出发&#xff0c;提供两种主流解题思路&#xff0c;并附上 C 实现代码&#xff0c;帮助你彻底掌握这道题。一、问题重述题目要求有…

【WorkManager】无法在 Direct Boot 模式下初始化

【WorkManager】无法在 Direct Boot 模式下初始化一、问题描述二、问题分析2.1 关于 Direct Boot 模式2.2 支持 Direct Boot 模式2.3 手动初始化 WorkManager 组件2.4 WorkManager 不支持 Direct Boot 的官方修改三、解决方案一、问题描述 在使用 WorkManager 库来实现开机上报…

Hybrid应用性能优化实战分享(本文iOS 与 H5为例,安卓同理)

前言在移动应用开发中&#xff0c;Hybrid 架构因其跨平台特性和开发效率优势被广泛采用。然而&#xff0c;WebView 的性能问题一直是开发者面临的挑战。本文将基于实际项目经验&#xff0c;分享 iOS Hybrid 应用的核心优化策略&#xff0c;涵盖 WebView 池化、预加载、用户体验…

点积、叉积、矩阵行列式详解、线性相关与线性无关、矩阵的秩、矩阵可逆与不可逆详解

1.向量 1.1 点积&#xff08;Dot Product&#xff09; 1.1.1 定义 点积是在求一个标量&#xff0c;点积结果没有方向。 对于两个向量u(u1,u2,u3),v(v1,v2,v3)\bold{u}(u_1,u_2,u_3),\bold{v}(v_1,v_2,v_3)u(u1​,u2​,u3​),v(v1​,v2​,v3​) 点积定义为&#xff1a;u⋅vu1v1u…