Day11,Hot100(贪心算法)

贪心

(1)121. 买卖股票的最佳时机

第 i 天卖出的最大利润,即在前面最低价的时候买入

class Solution:def maxProfit(self, prices: List[int]) -> int:min_price = prices[0]ans = 0for price in prices:ans = max(ans, price - min_price)min_price = min(min_price, price)return ans

(2)152. 乘积最大子数组 —— 美团一面

class Solution:def maxProduct(self, nums: List[int]) -> int:n = len(nums)f_max = [0] * nf_min = [0] * nf_max[0] = f_min[0] = nums[0]for i in range(1, n):x = nums[i]f_max[i] = max(f_max[i-1] * x, f_min[i-1] * x, x)f_min[i] = min(f_max[i-1] * x, f_min[i-1] * x, x)return max(f_max)

(3)55. 跳跃游戏

在这里插入图片描述

  • max_idx[i] 表示 nums[0 : max_idx] 所有元素中可以到达的最远位置
  • 所以只需逐个遍历每个位置, 判断从之前的位置开始跳能否到达该位置
class Solution:def canJump(self, nums: List[int]) -> bool:# max_idx[i] 表示 nums[0 : max_idx] 所有元素中可以到达的最远位置# 所以只需逐个遍历每个位置, 判断从之前的位置开始跳能否到达该位置max_idx = 0  for i,v in enumerate(nums):if i > max_idx:return Falsemax_idx = max(max_idx, i + nums[i])return True        

(4)45. 跳跃游戏 II

在这里插入图片描述

只在无法继续走的时候才建桥,且建的是最远的桥,这是所有方案中最优的。

只遍历到 n-2 因为我们的边界 cur_right,在遍历到 n-2 后,更新后的 cur_right 一定是 > n-2的,所以一定大于等于 n-1
在这里插入图片描述

class Solution:def jump(self, nums: List[int]) -> int:# 只在无法继续走的时候才建桥,且建的是最远的桥,这是所有方案中最优的。ans = 0cur_right = 0  # 已构造桥的最远端next_right = 0  # 下一座桥的最远端for i in range(len(nums) - 1):next_right = max(next_right, i + nums[i])if cur_right == i:cur_right = next_rightans += 1return ans

(5)763. 划分字母区间

在这里插入图片描述
「同一字母最多出现在一个片段中」
意味着,一个片段若要包含字母 a,那么所有的字母 a 都必须在这个片段中

利用合并区间的思想,s = a b a b c b a c a d e f e g d e h i j h k l i j

  • a出现的区间为 [0,8]
  • b出现的区间为 [1,5]
  • c 出现的区间为 [4,7]

结合<45. 跳跃游戏 II>的思路,

  • 区间右端点相当于当前点能到达的最远位置,
  • 如果这个最远的位置都被前面最远区间的最远位置包含住了
  • 那么这两个区间需要合并为一个区间

end = i 时,说明从 strat 到 当前位置 i 中的所有元素的最远区间就是当前位置
所以把当前位置划分为一个区间

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

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

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

相关文章

Spring Boot 流式响应豆包大模型对话能力

当Spring Boot遇见豆包大模型&#xff1a;一场流式响应的"魔法吟唱"仪式 一、前言&#xff1a;关于流式响应的奇妙比喻 想象一下你正在火锅店点单&#xff0c;如果服务员必须等所有菜品都备齐才一次性端上来&#xff0c;你可能会饿得把菜单都啃了。而流式响应就像贴…

2025年光电科学与智能传感国际学术会议(ICOIS 2025)

重要信息 官网&#xff1a;www.ic-icois.org 时间&#xff1a;2025年3月14-16日 地点&#xff1a;中国-长春 简介 2025年光电科学与智能传感国际学术会议&#xff08;ICOIS 2025&#xff09;将于2025年3月14-16日在中国-长春隆重召开。会议将围绕“光学光电”、“智能传感”…

【SpringBoot】数据访问技术spring Data、 JDBC、MyBatis、JSR-303校验

Spring Boot 数据访问技术及特性 目录标题 Spring Boot 数据访问技术及特性摘要1. 引言2. Spring Data架构与原理2.1 Spring Data概述2.2 Spring Data核心组件2.3 Spring Boot与Spring Data的集成机制 3. Spring Boot与JDBC的整合3.1 JDBC整合流程3.2 数据源自动配置3.3 JdbcTe…

Jmeter插件下载及安装

1、在Jmeter官网&#xff08;Install :: JMeter-Plugins.org&#xff09;下载所需插件 2、将下载的插件复制到jmeter文件下的lib/ext文件里&#xff08;PS&#xff1a;D:\Jmeter\apache-jmeter-5.6.2\lib\ext&#xff09; 3、打开Jmeter&#xff0c;选择 选项----Plugins Manag…

PostgreSQL10 逻辑复制实战:构建高可用数据同步架构!

PostgreSQL10 逻辑复制实战&#xff1a;打造高可用数据同步架构&#xff01; 概述 PostgreSQL 10 引入了逻辑复制&#xff08;Logical Replication&#xff09;&#xff0c;为数据库高可用和数据同步提供了更灵活的选择。PostgreSQL 复制机制主要分为物理复制和逻辑复制两种&…

OptiTrack光学跟踪系统:引领工厂机器人应用的革新浪潮

在现代化的工厂生产线上&#xff0c;一台机械臂正以惊人的毫米级精度执行着精密零件的装配任务。这一精准操作的背后&#xff0c;是OptiTrack光学跟踪系统的实时捕捉与优化&#xff0c;它正助力生产效率与产品质量迈向新的高度。如今&#xff0c;这一技术正在全球范围内广泛应用…

Prometheus + Grafana 监控

Prometheus Grafana 监控 官网介绍&#xff1a;Prometheus 是一个开源系统 监控和警报工具包最初由 SoundCloud 构建。自 2012 年成立以来&#xff0c;许多 公司和组织已经采用了 Prometheus&#xff0c;并且该项目具有非常 活跃的开发人员和用户社区。它现在是一个独立的开源…

常见排序算法

1.插入排序 直接插入排序 思想&#xff1a;将待排序的元素插入到有序序列中&#xff0c;并保持有序&#xff0c;直到所有待排序元素插入完为止&#xff0c;得到一个新的有序序列。 //升序 void InsertSort(int* a, int n) {for (int i 1; i < n; i){int end i - 1;int tm…

【MATLAB例程】三维下的IMM(交互式多模型),模型使用CV(匀速)和CA(匀加速)

给出三维下的交互式多模型&#xff08;IMM&#xff09;matlab例程&#xff0c;模型使用匀速运动CV和匀加速运动CA&#xff0c;滤波使用EKF&#xff08;扩展卡尔曼滤波&#xff09; 文章目录 代码运行结果程序结构 代码讲解模型定义&#xff1a;轨迹生成&#xff1a;IMM核心流程…

网络安全 越权分为几种

1. 权限查看 Linux 系统中的每个文件和目录都有访问许可权限&#xff0c;通过其确定谁可以通过何种方式对文件和目录进行访问和操作。 文件或目录的访问权限分为只读、只写和可执行3种。以文件为例&#xff0c;只读权限表示只允许读其内容&#xff0c;而禁止对其做任何的更改…

#7 Diffusion for beginners

DDPM的原理讲解视频:DDPM explain,就是口音一言难尽 还有大佬从零开始搭建模型代码的视频:DDPM implementation,相当震撼,代码我从来都是粗粗的看个大概了事,大佬直接手撕 一个很好的资源集合网站:https://diff-usion.github.io/Awesome-Diffusion-Models/ 今天学习一段…

React实现无缝滚动轮播图

实现效果&#xff1a; 由于是演示代码&#xff0c;我是直接写在了App.tsx里面在 文件位置如下&#xff1a; App.tsx代码如下&#xff1a; import { useState, useEffect, useCallback, useRef } from "react"; import { ImageContainer } from "./view/ImageC…

2025 最新版鸿蒙 HarmonyOS 开发工具安装使用指南

为保证 DevEco Studio 正常运行&#xff0c;建议电脑配置满足如下要求&#xff1a; Windows 系统 操作系统&#xff1a;Windows10 64 位、Windows11 64 位内存&#xff1a;16GB 及以上硬盘&#xff1a;100GB 及以上分辨率&#xff1a;1280*800 像素及以上 macOS 系统 操作系统…

使用v-for用户菜单渲染

前端页面的菜单渲染&#xff0c;是项目开发中的很重要一部分&#xff0c;设计思路需要我们好好斟酌一下。 因为我们要根据登录用户的角色&#xff0c;去渲染对应的菜单。如下&#xff1a; 目录 一、数据库设计 1.1 创建menu表 练习1&#xff1a;从menu表中&#xff0c;根据父…

实战-使用 Playbook 批量部署多台 LAMP 环境

实战-使用 Playbook 批量部署多台 LAMP 环境 playbooks 使用步骤 playbook 是一个不同于使用 ansible 命令行执行方式的模式&#xff0c;功能更强大更灵活。 1、在 playbooks 中定义任务&#xff1a; - name&#xff1a; task description #任务描述信息 module_name: modul…

当JMeter遇见AI:性能测试进入智能时代(附实战案例)

性能测试作为软件开发中的关键环节&#xff0c;确保系统在高负载下仍能高效运行。JMeter 是一种广泛使用的开源工具&#xff0c;用于负载测试和性能测量&#xff0c;但传统方法往往效率低下。AI 的引入&#xff0c;为性能测试带来了智能化升级。本文将探讨 JMeter 与 AI 的结合…

筑牢安全防线:工商业场所燃气泄漏防护新方案

燃气安全是企业经营不可逾越的生命线。在餐饮后厨、化工车间、酒店锅炉房等场所&#xff0c;可燃气体一旦泄漏&#xff0c;极易引发严重事故。如何实现精准监测、快速响应&#xff0c;成为工业及商业领域安全管理的核心诉求。旭华智能深耕安全监测领域&#xff0c;推出的工业及…

docker本地镜像源搭建

最近Deepseek大火后&#xff0c;接到任务就是帮客户装Dify&#xff0c;每次都头大&#xff0c;因为docker源不能用&#xff0c;实在没办法&#xff0c;只好自己搭要给本地源。话不多说具体如下&#xff1a; 1、更改docker的配置文件&#xff0c;添加自己的私库地址&#xff0c…

数据结构(初阶)(四)----双向链表

双向链表初始化尾插打印尾删头插头删查找在pos位置之后插入数据在pos位置之前插入数据删除pos结点销毁链表 双向链表 链表分类:8种&#xff08;2*2*2&#xff09; 带头&#xff0c;不带头 单向&#xff0c;双向 循环&#xff0c;不循环 最常用的是两种&#xff1a; 单链表…

python-leetcode-寻找重复数

287. 寻找重复数 - 力扣&#xff08;LeetCode&#xff09; class Solution:def findDuplicate(self, nums: List[int]) -> int:# Step 1: 找到环的相遇点slow nums[0]fast nums[0]# 使用快慢指针&#xff0c;直到相遇while True:slow nums[slow] # 慢指针走一步fast nu…