top100-贪心算法

news/发布时间2024/5/15 21:07:12

第一题

题目链接

121. 买卖股票的最佳时机 - 力扣(LeetCode)

解题思路

1、暴力破解

我们需要找出给定数组中两个数字之间的最大差值,即max(prices[j] - prices[i])

# 此方法会超时
class Solution:def maxProfit(self, prices: List[int]) -> int:ans = 0for i in range(len(prices)):for j in range(i + 1, len(prices)):ans = max(ans, prices[j] - prices[i])return ans
2、一次遍历

遍历价格数组一遍,记录历史最低点,然后在每一天考虑这么一个问题:如果我是在历史最低点买进的,那么我今天能赚多少钱

# 此方法会超时
class Solution:def maxProfit(self, prices: List[int]) -> int:inf = int(1e9)minprice = infmaxprofit = 0for price in prices:maxprofit = max(price - minprice,maxprofit)minprice = min(price,minprice)return maxprofit

第二题

题目链接

55. 跳跃游戏 - 力扣(LeetCode)

解题思路

这样一来,我们依次遍历数组中的每一个位置,并实时维护最远可以到达的距离。对于当前遍历到的位置x,,如果它是在最远可以到达的位置的范围内,那么我们就可以从起点通过若干次跳跃到达该位置,因此我们可以用x + nums[x]更新 最远可以到达的位置。

在遍历的过程中,如果最远可以到达的位置大于等于数组中的最后一个位置,那就说明最后一个位置可达,我们就可以直接返回True作为答案。反之,如果在遍历结束后,最后一个位置仍然不可达,我们就返回False作为答案。

class Solution:def canJump(self, nums: List[int]) -> bool:n,rightmost = len(nums),0for i in range(n):if i <= rightmost:rightmost = max(rightmost,i + nums[i])if rightmost >= n -1:return Truereturn False

第三题

题目链接

45. 跳跃游戏 II - 力扣(LeetCode)

解题思路

1、如果某一个作为起跳点的格子可以跳跃的距离是3,那么表示后面3个格子都可以作为起跳点。

        可以对每一个能作为起跳点的格子都尝试跳一次,把能跳到最远的距离不断更新。

2、如果从这个起跳点起跳叫做第1次跳跃,那么从后面3个格子起跳都可以叫做第2次跳跃。

3、所以,当一次跳跃结束时,从下一个格子开始,到现在能跳到最远距离,都是下一次跳跃的起跳点。

        跳完一次之后,更新下一次起跳点的范围

        在新的范围内跳,更新能跳到最远的距离

4、记录跳跃次数,如果跳到了终点,就得到了结果。

class Solution:def jump(self, nums: List[int]) -> int:ans, start, end = 0,0,1while end < len(nums):maxPos = 0for i in range(start,end):maxPos = max(maxPos,i + nums[i])start = endend = maxPos + 1ans += 1return ans

第四题

题目链接

763. 划分字母区间 - 力扣(LeetCode)

解题思路

class Solution:def partitionLabels(self, s: str) -> List[int]:last = [0] * 26for i,ch in enumerate(s):last[ord(ch) - ord("a")] = ipartition = list()start = end = 0print(last)for i, ch in enumerate(s):end = max(end,last[ord(ch) - ord("a")])if i == end:partition.append(end - start + 1)start = end + 1return partition

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

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

相关文章

git实操gitee

第一步&#xff1a;远程连接远程仓库 git remote add origin gitgitee.com:name/project.git 上面信息可以在下面看到。 第二步&#xff1a;拉取项目 git pull origin master --allow-unrelated-histories 第三步&#xff1a;修改项目&#xff0c;保持后提交 git add . gi…

k8s-heml管理 17

Helm是Kubernetes 应用的包管理工具&#xff0c;主要用来管理 Charts&#xff0c;类似Linux系统的 yum。Helm Chart 是用来封装 Kubernetes 原生应用程序的一系列 YAML 文件。可以在你部署应用的时候自定义应用程序的一些 Metadata&#xff0c;以便于应用程序的分发。 对于应用…

激光条纹中心线提取算法FPGA实现方案

1 概述 激光条纹中心线提取是3D线激光测量领域一个较为基础且重要的算法。目前&#xff0c;激光条纹中心线提取已有多种成熟的算法&#xff0c;有很多相关的博客和论文。 激光条纹中心线提取的真实意义在于工程化和产品化的实际应用&#xff0c;而很多算法目前只能用于学术研究…

【pytorch】常用代码

文章目录 条件与概率torch.tensor()torch.rand()torch.randn()torch.randint()torch.multinominal() 逻辑运算torch.argmax()torch.max()torch.sum()torch.tanh()torch.pow() 功能性操作 torch.nn.functionalF.normalize()F.elu()F.relu()F.softmax() 张量计算torch.zeros()tor…

Diffbot 小记

文章目录 关于 Diffbot产品和价格 关于 Diffbot 官网&#xff1a;https://www.diffbot.com官方文档&#xff1a;https://docs.diffbot.com/docs/getting-started-with-diffbotAPI 手册 : https://docs.diffbot.com/reference/introduction-to-diffbot-apis 产品和价格 两周内…

【Android】坐标系

Android 系统中有两种坐标系&#xff0c;分别为 Android 坐标系和 View 坐标系。了解这两种坐标系能够帮助我们实现 View 的各种操作&#xff0c;比如我们要实现 View 的滑动&#xff0c;你连这个 View 的位置都不知道&#xff0c;那如何去操作呢&#xff1f; 一、Android 坐标…

【Flink精讲】Flink状态及Checkpoint调优

RocksDB大状态调优 RocksDB 是基于 LSM Tree 实现的&#xff08;类似 HBase&#xff09; &#xff0c;写数据都是先缓存到内存中&#xff0c; 所以 RocksDB 的写请求效率比较高。 RocksDB 使用内存结合磁盘的方式来存储数据&#xff0c;每 次获取数据时&#xff0c;先从内存中 …

软件工程复习笔记

一、软件工程概述 软件 = 程序 + 数据 + 相关文档 软件危机(Software Crisis) 指由于落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。 软件工程三要素 方法、工具、过程 软件工程目标 在给定成本、进度的…

【Linux】部署前后端分离项目---(Nginx自启,负载均衡)

目录 前言 一 Nginx&#xff08;自启动&#xff09; 2.1 Nginx的安装 2.2 设置自启动Nginx 二 Nginx负载均衡tomcat 2.1 准备两个tomcat 2.1.1 复制tomcat 2.1.2 修改server.xml文件 2.1.3 开放端口 2.2 Nginx配置 2.2.1 修改nginx.conf文件 2.2.2 重启Nginx服务 2…

STM32 4位数码管和74HC595

4位数码管 在使用一位数码管的时候&#xff0c;会用到8个IO口&#xff0c;那如果使用4位数码管&#xff0c;难道要使用32个IO口吗&#xff1f;肯定是不行的&#xff0c;太浪费了IO口了。把四个数码管全部接一起共用8个IO口&#xff0c;然后分别给他们一个片选。所以4位数码管共…

本地项目如何上传到gitee

文章目录 一、在gitee上新建远程仓库二、初始化本地仓库三、执行git命令上传代码 一、在gitee上新建远程仓库 仓库名称必填&#xff0c;路径自动跟仓库名称保持一致 解释说明&#xff1a; 仓库名称&#xff1a;必填&#xff0c;每个仓库都需要有一个名称&#xff0c;同一个码…

关于Kinect 互动沙盘 深度图 Shader Graph 分层

把Kinect的深度图穿给Shader Graph using com.rfilkov.kinect; using UnityEngine; using UnityEngine.UI; public class GetDepthTex : MonoBehaviour { public Material Mat_SandTable; void Update() { Mat_SandTable.SetTexture("_MainTex"…

Ubuntu上Jenkins自动化部署Gitee上SpringBoot项目

文章目录 安装安装JDK安装Maven安装GitNodeJS安装&#xff08;可选&#xff09;安装Jenkins 配置Jenkins为Jenkins更换插件源设置jenkins时区安装插件全局工具配置添加Gitee凭证Gitee项目配置 部署后端1.新建任务2.配置源码管理3.构建触发器4.到Gitee中添加WebHook5.构建环境6.…

Python爬虫实战第一例【一】

前情提要 今天我们开始更新Python爬虫实战例子&#xff0c;该系列预计会更很多很多期&#xff0c;因为实在有太多了&#xff01;&#xff01; 同样作为新人0&#xff0c;作者尽量在自己完全理解的基础上尽可能通俗易懂的讲解给大家&#xff0c;还望大家多多支持&#xff01; …

今日必读的7篇大模型论文

1.Google DeepMind&#xff1a;大模型能做多跳推理吗&#xff1f; 来自 Google DeepMind、伦敦大学学院、Google Research 和特拉维夫大学的研究团队探讨了大型语言模型&#xff08;LLMs&#xff09;是否能够对复杂的提示执行多跳推理&#xff0c;如“The mother of the singe…

Vue.js+SpringBoot开发生活废品回收系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容三、界面展示3.1 登录注册3.2 资源类型&资源品类模块3.3 回收机构模块3.4 资源求购/出售/交易单模块3.5 客服咨询模块 四、免责说明 一、摘要 1.1 项目介绍 生活废品回收系统是可持续发展的解决方案&#xff0c;旨在鼓…

openGauss学习笔记-229 openGauss性能调优-系统调优-配置Ustore

文章目录 openGauss学习笔记-229 openGauss性能调优-系统调优-配置Ustore229.1 设计原理229.2 核心优势229.3 使用指导 openGauss学习笔记-229 openGauss性能调优-系统调优-配置Ustore Ustore存储引擎&#xff0c;又名In-place Update存储引擎&#xff08;原地更新&#xff09…

51单片机学习(5)-----蜂鸣器的介绍与使用

前言&#xff1a;感谢您的关注哦&#xff0c;我会持续更新编程相关知识&#xff0c;愿您在这里有所收获。如果有任何问题&#xff0c;欢迎沟通交流&#xff01;期待与您在学习编程的道路上共同进步。 目录 一. 蜂鸣器的介绍 1.蜂鸣器介绍 2.压电式蜂鸣器 &#xff08;无源…

探索无限:Sora与AI视频模型的技术革命 - 开创未来视觉艺术的新篇章

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua&#xff0c;在这里我会分享我的知识和经验。&#x…

Python爬虫实战:图片爬取与保存

引言&#xff1a; 在本文中&#xff0c;我们将学习如何使用Python创建一个简单的图片爬虫。 我们将利用requests库来发送HTTP请求&#xff0c;BeautifulSoup库来解析HTML页面&#xff0c;以及os和shutil库来下载和保存图片。通过这个教程&#xff0c;你将学会如何爬取网…
推荐文章