Day11,Hot100(贪心算法)

贪心

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

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

class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        min_price = prices[0]
        ans = 0

        for 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] * n
        f_min = [0] * n
        f_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 False
            max_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 = 0
        cur_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_right
                ans += 1
        
        return 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 = 0
        ans = []

        for i,v in enumerate(s):
            end = max(end, last[v])
            if end == i:
                ans.append(end-start+1)
                start = i + 1
        
        return ans

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

STM32呼吸灯实验手册(TIM定时器)

一、实验目标 使用TIM定时器的PWM模式控制LED亮度实现LED渐亮渐灭的呼吸灯效果掌握HAL库的TIM配置方法 二、硬件准备 开发板&#xff1a;STM32F103C8T6LED模块&#xff1a;LED串联220Ω电阻两组USB-TTL调试器硬件连接 三、软件配置&#xff08;STM32CubeMX&#xff09; 打开…

51页精品PPT | 农产品区块链溯源信息化平台整体解决方案

PPT展示了一个基于区块链技术的农产品溯源信息化平台的整体解决方案。它从建设背景和需求分析出发&#xff0c;强调了农产品质量安全溯源的重要性以及国际国内的相关政策要求&#xff0c;指出了食品安全问题在流通环节中的根源。方案提出了全面感知、责任到人、定期考核和追溯反…

python-leetcode-删除并获得点数

740. 删除并获得点数 - 力扣&#xff08;LeetCode&#xff09; 解法 1&#xff1a;动态规划&#xff08;O(n) 时间&#xff0c;O(n) 空间&#xff09; class Solution:def deleteAndEarn(self, nums: List[int]) -> int:if not nums:return 0# 统计每个数的贡献points Cou…

Grafana服务安装并启动

Grafana服务安装并启动 1、介绍2、下载Grafana3、解压缩文件4、启动Grafana服务5、增加数据源,填写Prometheus访问地址6、增加图表 1、介绍 Grafana是一个开源的可视化系统监控和警报工具包。 2、下载Grafana 介绍&#xff1a;Grafana是一个开源的可视化系统监控和警报工具包…

6. grafana的graph简介

1. Settings功能 2. Visualization功能 &#xff08;可视化的方式&#xff0c;后续会写一些&#xff09; 3. Display 功能&#xff08;显示方面的设置&#xff09; bars 柱状图方式显示 lines&#xff08;不选不会出功能&#xff09; line width 线条的粗细 staircase 会让折…

react18自定义hook实现

概念&#xff1a;自定义 hook 是一种将组件逻辑提取到可复用函数中的方式&#xff0c;它允许你在多个组件中共享相同的状态和行为。自定义 hook 的本质上是一个普通的 JavaScript 函数&#xff0c;它可以使用 React 内部的 hook&#xff08;如 useState、useEffect、useContext…

千峰React:函数组件使用(3)

多组态进行正确记忆 首先看这个代码 import { useState } from reactfunction App() {const [count, setCount] useState(0)const [count2, setCount2] useState(0)const [count3, setCount3] useState(0)const handleClick () > {setCount(count 1)}return (<div&…

xss-labs搭建及学习

搭建 搭建过程与一般的网站搭建差不多 参考资料 当出现这个界面就是成功了 学习 学习资料 xss概念理解&#xff1a;XSS跨站脚本攻击 xss常见标签&#xff1a;XSS常见触发标签 level1-直接打 这里提示payload长度为4查看一下源码 发现get传参name的值test插入了html里头&am…

网络安全审计员

在当今数字化时代&#xff0c;随着信息技术的迅猛发展&#xff0c;网络安全问题日益凸显&#xff0c;成为各行各业不容忽视的重要议题。特别是对于企业、政府机构等组织而言&#xff0c;网络安全不仅关乎数据资产的安全&#xff0c;更与组织的声誉、客户信任乃至法律法规的遵从…

安全模块设计:token服务、校验注解(开启token校验、开启签名校验、允许处理API日志)、获取当前用户信息的辅助类

文章目录 引言pom.xmlI 校验注解ApiValidationII token服务TokenService获取当前用户信息的辅助类III 域登录接口响应数据登陆用户信息引言 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/PO…

SpringBoot 2 后端通用开发模板搭建(异常处理,请求响应)

目录 一、环境准备 二、新建项目 三、整合依赖 1、MyBatis Plus 数据库操作 2、Hutool 工具库 3、Knife4j 接口文档 4、其他依赖 四、通用基础代码 1、自定义异常 2、响应包装类 3、全局异常处理器 4、请求包装类 5、全局跨域配置 补充&#xff1a;设置新建类/接…

京准电钟:NTP精密时钟服务器在自动化系统中的作用

京准电钟&#xff1a;NTP精密时钟服务器在自动化系统中的作用 京准电钟&#xff1a;NTP精密时钟服务器在自动化系统中的作用 NTP精密时钟服务器在自动化系统中的作用非常重要&#xff0c;特别是在需要高精度时间同步的场景中。NTP能够提供毫秒级的时间同步精度&#xff0c;这…

基于Redis 的分布式 session 图解

Redis 分布式 Session 工作原理 1. 传统 Session 的问题 在传统单服务器环境中&#xff0c;HTTP Session 存储在应用服务器的内存中。这在分布式系统中会导致问题&#xff1a; 用户的请求可能被分发到不同服务器&#xff0c;导致会话不一致服务器宕机会导致会话丢失需要依赖…

pikachu

暴力破解 基于表单的暴力破解 【2024版】最新BurpSuit的使用教程&#xff08;非常详细&#xff09;零基础入门到精通&#xff0c;看一篇就够了&#xff01;让你挖洞事半功倍&#xff01;_burpsuite使用教程-CSDN博客 登录页面&#xff0c;随意输入抓包&#xff0c;发送到攻击…

vmware:新装ubuntu无法使用ssh连接或者复制粘连

前言 如标题所示&#xff0c;我在使用vmware-workstation安装ubuntu22.04LTS桌面版虚拟机后&#xff0c;发现没办法使用ssh远程连接&#xff0c;或者与宿主机之间的复制粘连功能。 解决方案 卡了一天&#xff0c;以为是网络通讯问题&#xff0c;没想到是内部服务的问题。 远程连…

【uniapp原生】实时记录接口请求延迟,并生成写入文件到安卓设备

在开发实时数据监控应用时&#xff0c;记录接口请求的延迟对于性能分析和用户体验优化至关重要。本文将基于 UniApp 框架&#xff0c;介绍如何实现一个实时记录接口请求延迟的功能&#xff0c;并深入解析相关代码的实现细节。 前期准备&必要的理解 1. 功能概述 该功能的…

基于机器学习的结构MRI分析:预测轻度认知障碍向阿尔茨海默病的转化

摘要 阿尔茨海默病是一种致残性神经退行性疾病&#xff0c;目前尚无有效的治疗方法。预测阿尔茨海默病的诊断对患者的预后至关重要&#xff0c;但目前的阿尔茨海默病生物标志物检测方法具有侵入性、耗时且昂贵。因此&#xff0c;开发基于MRI的计算方法用于阿尔茨海默病的早期诊…

HTML——前端基础1

目录 前端概述 前端能做的事情​编辑 两步完成一个网页程序 前端工具的选择与安装 HTML HTML5介绍 HTML5的DOCTYPE声明 HTML基本骨架 文字标签 标题之标签 标签之段落、换行、水平线 标签之图片 标签之超文本链接 标签之文本 列表标签之有序列表 列表标签之无序…

量子计算可能改变世界的四种方式

世界各地的组织和政府正将数十亿美元投入到量子研究与开发中&#xff0c;谷歌、微软和英特尔等公司都在竞相实现量子霸权。 这其中的利害关系重大&#xff0c;有这么多重要的参与者&#xff0c;量子计算机的问世可能指日可待。 为做好准备&#xff0c;&#xff0c;我们必须了…

Jsmoke-一款强大的js检测工具,浏览器部署即用,使用方便且高效

目录标题 Jsmoke &#x1f6ac;&#x1f6ac; by Yn8rt使用方式界面预览功能特性支持的敏感信息类型 Jsmoke &#x1f6ac;&#x1f6ac; by Yn8rt ​ 该插件由 Yn8rt师傅 开发&#xff0c;插件可以理解为主动版的hae和apifinder&#xff0c;因为其中的大多数规则我都引用了&a…