当前位置: 首页 > news >正文

算法打卡day28|贪心算法篇02|Leetcode 122.买卖股票的最佳时机 II、55. 跳跃游戏、45.跳跃游戏 II

算法题

Leetcode 122.买卖股票的最佳时机 II

题目链接:122.买卖股票的最佳时机 II

 大佬视频讲解:买卖股票的最佳时机 II视频讲解

 个人思路

因为只有一只股票,且两天作一个交易单元,那每次只收集正利润就可以最终最多可以获取的利润,可以用贪心。

解法
贪心法

从下图可以发现,其实收集每天的正利润就可以,收集正利润的区间,就是股票买卖的区间,而且只需要关注最终利润,不需要记录区间

局部最优:收集每天的正利润,全局最优:求得最大利润

class Solution {public int maxProfit(int[] prices) {int result = 0;//最终利润for (int i = 1; i < prices.length; i++) {result += Math.max(prices[i] - prices[i - 1], 0);//只收集正利润}return result;}
}

时间复杂度:O(n);(遍历整个数组)

空间复杂度:O(1);(常量级的变量)


 Leetcode  55. 跳跃游戏

题目链接:55. 跳跃游戏

大佬视频讲解:跳跃游戏视频讲解

个人思路

可以每次取最大的跳跃步数,这个就是可以跳跃的覆盖范围,当覆盖范围盖过终点 就代表能跳到终点。每步取最优,最后推出全局最优,用贪心。

解法
贪心法

这个问题转化为跳跃覆盖范围究竟可不可以覆盖到终点!

每次移动取最大跳跃步数(得到最大的覆盖范围),每移动一个单位,就更新最大覆盖范围。

贪心算法局部最优解:每次取最大跳跃步数(取最大覆盖范围),整体最优解:最后得到整体最大覆盖范围,看是否能到终点

i 每次移动只能在 cover 的范围内移动,每移动一个元素,cover 得到该元素数值(新的覆盖范围)的补充,让 i 继续移动下去。而 cover 每次只取 max;如果 cover 大于等于了终点下标,直接 return true 。

class Solution {public boolean canJump(int[] nums) {if (nums.length == 1) {return true;}int coverRange = 0; //覆盖范围, 初始覆盖范围应该是0,因为下面的迭代是从下标0开始的//在覆盖范围内更新最大的覆盖范围for (int i = 0; i <= coverRange; i++) {coverRange = Math.max(coverRange, i + nums[i]);if (coverRange >= nums.length - 1) {//找到覆盖终点return true;}}return false;}
}

时间复杂度:O(n);(遍历整个数组)

空间复杂度:O(1);(常量级的变量)


 Leetcode  45.跳跃游戏 II

题目链接:45.跳跃游戏 II

大佬视频讲解:跳跃游戏 II视频讲解

 个人思路

这道题和上一题思路类似;只是本题要计算最少步数。在计算时,当前可移动距离尽可能多走,如果还没到终点,步数再加一。一步尽可能多走,从而达到最少步数。局部可以推全局,用贪心。

解法
贪心法

在解题时要注意,不能真的能跳多远就跳多远,那样就不知道下一步最远能跳到哪里了。

要从覆盖范围出发,不管怎么跳,覆盖范围内一定是可以跳到的,以最小的步数增加覆盖范围,覆盖范围一旦覆盖了终点,得到的就是最少步数.

所以这里需要统计两个覆盖范围,当前这一步的最大覆盖和下一步最大覆盖

如果移动下标达到了当前这一步的最大覆盖最远距离了,还没有到终点的话,那么就必须再走一步来增加覆盖范围,直到覆盖范围覆盖了终点.

class Solution {public int jump(int[] nums) {int result = 0;//步数int end = 0;// 当前覆盖的最远距离下标int temp = 0;// 下一步覆盖的最远距离下标//移动下标i只要遇到当前覆盖最远距离的下标,直接步数加一for (int i = 0; i <= end && end < nums.length - 1; ++i) {temp = Math.max(temp, i + nums[i]);//更新最大覆盖范围if (i == end) {// 可达位置的改变次数就是跳跃次数end = temp;result++;}}return result;}
}

时间复杂度:O(n);(遍历整个数组)

空间复杂度:O(1);(常量级变量)


 以上是个人的思考反思与总结,若只想根据系列题刷,参考卡哥的网址代码随想录算法官网

相关文章:

算法打卡day28|贪心算法篇02|Leetcode 122.买卖股票的最佳时机 II、55. 跳跃游戏、45.跳跃游戏 II

算法题 Leetcode 122.买卖股票的最佳时机 II 题目链接:122.买卖股票的最佳时机 II 大佬视频讲解&#xff1a;买卖股票的最佳时机 II视频讲解 个人思路 因为只有一只股票&#xff0c;且两天作一个交易单元&#xff0c;那每次只收集正利润就可以最终最多可以获取的利润&#xf…...

2013年认证杯SPSSPRO杯数学建模A题(第一阶段)护岸框架全过程文档及程序

2013年认证杯SPSSPRO杯数学建模 A题 护岸框架 原题再现&#xff1a; 在江河中&#xff0c;堤岸、江心洲的迎水区域被水流长期冲刷侵蚀。在河道整治工程中&#xff0c;需要在受侵蚀严重的部位设置一些人工设施&#xff0c;以减弱水流的冲刷&#xff0c;促进该处泥沙的淤积&…...

【3】3道链表力扣题:删除链表中的节点、反转链表、判断一个链表是否有环

3道链表力扣题 一、删除链表中的节点&#x1f30f; 题目链接&#x1f4d5; 示例&#x1f340; 分析&#x1f4bb; 代码 二、反转链表&#x1f30f; 题目链接&#x1f4d5; 示例&#x1f340; 分析① 递归② 迭代 三、判断一个链表是否有环&#x1f30f; 题目链接&#x1f4d5; …...

mongodb sharding分片模式的集群数据库,日志治理缺失导致写入数据库报错MongoWriteConcernException的问题总结(上)

一、背景 常见的mongodb集群模式有以下三种&#xff1a; 主从复制&#xff08;Master-Slave&#xff09;模式副本集&#xff08;Replica Set&#xff09;模式分片&#xff08;Sharding&#xff09;模式 公司测试环境搭建的集群采用分片模式&#xff0c;有同事反馈说&#xf…...

苹果Mac OS系统上安装brew

1.命令行安装brew Homebrew是 mac的包管理器&#xff0c;仅需执行相应的命令,就能下载安装需要的软件包&#xff0c;可以省掉自己去下载、解压、拖拽(安装)等繁琐的步骤。 a. 打开HomeBrew官网&#xff1a;https://brew.sh/index.html b. 点击页面上的复制按钮&#xff0c;打…...

应用侧渲染流程

应用侧渲染流程 《Android应用程序UI硬件加速渲染环境初始化过程分析》 https://blog.csdn.net/Luoshengyang/article/details/45769759 《Android HWUI绘制流程》 https://wizzie.top/android/android_HWUI_Draw/#1-gpu%E6%B8%B2%E6%9F%93%E7%A1%AC%E4%BB%B6%E5%8A%A0%E9%…...

学生党开放式运动耳机怎么选?五款超高销量高性价比品牌推荐

开放式运动耳机成为了许多人的运动首选装备&#xff0c;想要在众多的开放式耳机中找到一款价格亲民&#xff0c;且性能在线高性价比的开放式运动耳机可并非那么简单&#xff0c;所以今天我就来为大家推荐五款超高销量、高性价比的运动耳机品牌。 在推荐之前&#xff0c;整理了…...

服务器中有g++,但是查询不到,Command ‘g++‘ not found

有gcc但是查询不到g&#xff0c;gcc版本为9.5.0 (base) zyICML:~$ g -V Command g not found, but can be installed with: apt install g Please ask your administrator. 突然就出现这个问题&#xff0c;导致detectron装不上&#xff0c;现在有时间了专门研究下怎么解决 这…...

count(“0“),split() ,sys.stdin.readline() ,matrix.append, input().strip()

目录 count() 方法主要用于计算一个序列(例如列表、元组或字符串)中某个元素出现的次数...

Flink on Kubernetes (flink-operator) 部署Flink

flink on k8s 官网 https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-release-1.1/docs/try-flink-kubernetes-operator/quick-start/ 我的部署脚本和官网不一样&#xff0c;有些地方官网不够详细 部署k8s集群 注意&#xff0c;按照默认配置至少有两台wo…...

代码随想录算法训练营第三十二天|122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II

122.买卖股票的最佳时机II - &#x1f517; 讲解 - &#x1f517; 方法一&#xff1a; &#x1f4a1;这道题自己想到的办法没有解析那么清晰&#xff0c;大致思路就是第一步先找到第一个可以买进的时间&#xff08;也就是第一个prices[i] < prices[i 1]的i&#xff09;&…...

常见数据库分类介绍及其适用场景

一、引言 数据库是指在计算机系统中&#xff0c;为了结构化地管理和存储数据而建立起来的一种数据管理系统。它以高效、安全和可靠的方式存储和管理用户所需的各种数据&#xff0c;并提供了强大的数据处理和查询功能。随着信息技术的不断发展&#xff0c;数据库已经成为现代计…...

周末总结(2024/03/30)

工作 接受破烂现状&#xff0c;改变状态 上周一周的工作都感觉是摸鱼状态&#xff0c;每天只有三个小时左右的时间聚焦在工作上&#xff0c;其他时间都在胡思乱想。但是我发现可以在工作中学习和下班相关的技术栈。我无意改变自己的工作状态&#xff0c;只想在5月底找好下家然后…...

(75)爬楼梯

文章目录 1. 每日一言2. 题目2.1 解题思路2.1.1 递归2.1.2 记忆化搜索2.1.3 动态规划2.1.4 动态规划空间优化 2.2 代码2.2.1 递归2.2.2 记忆化搜索2.2.3 动态规划2.2.4 动态规划空间优化 3. 结语 1. 每日一言 Happy life lies in a peaceful mind. 幸福的生活存在于心绪的宁静…...

ttkbootstrap界面美化系列之Notebook(四)

在简单的界面设计中&#xff0c;Notebook也是常用的组件之一&#xff0c;Notebook组件的引入可以根据标签来切换不同的界面。使得界面更有层次感&#xff0c;不必都挤在一个界面上。在tkinter中就有Notebook组件&#xff0c;在ttkbootstrap中&#xff0c;同样也对Notebook进行了…...

MySQL8存储过程整合springboot

注意&#xff1a;调用使用mybatis-plus3形式调用&#xff0c;可能会有些区别 1. 创建存储过程 -- -- 生成员工工号的存储过程 DELIMITER $$ CREATE PROCEDURE generate_employee_number(OUT employeeNumber VARCHAR(20)) -- 解释 out 一个返回值 BEGINDECLARE prefix VARCHAR…...

Acwing 1238.日志统计 双指针

小明维护着一个程序员论坛。现在他收集了一份”点赞”日志&#xff0c;日志共有 N&#xfffd; 行。 其中每一行的格式是&#xff1a; ts id 表示在 ts 时刻编号 id 的帖子收到一个”赞”。 现在小明想统计有哪些帖子曾经是”热帖”。 如果一个帖子曾在任意一个长度为 D 的…...

Matlab-R2022b-安装文件分享

​一、MATLAB主要特点和功能 MATLAB是一款强大的科学计算软件&#xff0c;专门用于算法开发、数据分析、数值计算以及科学数据可视化。 以下是一些MATLAB的主要特点和功能&#xff1a; 1.矩阵运算: MATLAB的名字来源于"Matrix Laboratory"&#xff08;矩阵实验室&…...

Flutter开发之objectbox

Flutter开发之objectbox 在之前进行iOS开发的时候使用WCDB去进行管理数据库很方便&#xff0c;它支持ORM&#xff08;Object-Relational Mapping&#xff0c;对象关系映射&#xff09;&#xff0c;用于实现面向对象编程语言里不同类型系统的数据之间的转换。 那么在Flutter开发…...

AI Drug Discovery Design(学习路线)

AIDD&#xff0c;即AI Drug Discovery & Design&#xff0c;是近年来非常火热的技术应用&#xff0c;已经介入到新药设计到研发的大部分环节当中&#xff0c;为新药发现与开发带来了极大的助力。其学习路线涉及多个学科和领域的知识。以下是一个可能的AIDD学习路线&#xf…...

避开这5个坑!用HipSTR分析NGS数据时最容易出错的STR检测问题

避开这5个坑&#xff01;用HipSTR分析NGS数据时最容易出错的STR检测问题 STR检测在二代测序数据分析中扮演着关键角色&#xff0c;但实际操作中常会遇到各种"坑"。本文将结合实战经验&#xff0c;剖析使用HipSTR进行STR检测时最容易出错的五个关键环节&#xff0c;帮…...

从.bib到.bbl:手把手教你搞定LaTeX参考文献的完整流程

从.bib到.bbl&#xff1a;手把手教你搞定LaTeX参考文献的完整流程 如果你曾被LaTeX的参考文献格式折磨得焦头烂额&#xff0c;这篇文章就是为你准备的。我们将从零开始&#xff0c;完整走一遍从文献管理到最终PDF生成的每个步骤&#xff0c;特别关注那些让新手困惑的.bib、.bbl…...

DAMOYOLO-S效果展示:低光照、模糊、遮挡图像下的鲁棒检测能力

DAMOYOLO-S效果展示&#xff1a;低光照、模糊、遮挡图像下的鲁棒检测能力 1. 引言&#xff1a;当目标检测遇上“坏天气” 想象一下&#xff0c;你正在开发一个智能安防摄像头系统&#xff0c;或者一个自动驾驶的视觉模块。白天光线充足、画面清晰的时候&#xff0c;一切都很完…...

抖音音频提取工具 v1.0 - 快速提取抖音视频音频

抖音音频提取工具 v1.0 是可快速提取抖音短视频音频并保存本地的实用工具&#xff0c;依托 WebView2 与 FFmpeg 技术实现&#xff0c;操作简单易上手&#xff0c;能满足车机播放等个人娱乐音频使用需求&#xff0c;工具仅支持个人娱乐使用。抖音音频提取工具 v1.0 抖音短视频音…...

如何5分钟制作超轻量Windows 11系统:Tiny11Builder终极指南

如何5分钟制作超轻量Windows 11系统&#xff1a;Tiny11Builder终极指南 【免费下载链接】tiny11builder Scripts to build a trimmed-down Windows 11 image. 项目地址: https://gitcode.com/GitHub_Trending/ti/tiny11builder 想要体验一个干净、流畅、占用空间极小的W…...

解锁风扇智能控制秘诀:静音散热与性能优化完全指南

解锁风扇智能控制秘诀&#xff1a;静音散热与性能优化完全指南 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/Fa…...

收藏!2026非科班/转行小白必看:3步切入AI大模型,月薪30w+实战路径

2026年的职场赛道&#xff0c;AI大模型依旧是绝对的“黄金风口”。 最新行业报告显示&#xff0c;AI相关岗位需求逆势增长37%&#xff0c;薪资领跑全行业&#xff0c;大厂校招起薪普遍突破25k。但一个残酷的现实是&#xff1a; 太多非科班、半路转行的程序员&#xff0c;还在门…...

3分钟快速上手!Balena Etcher终极镜像烧录工具完全指南

3分钟快速上手&#xff01;Balena Etcher终极镜像烧录工具完全指南 【免费下载链接】etcher Flash OS images to SD cards & USB drives, safely and easily. 项目地址: https://gitcode.com/GitHub_Trending/et/etcher Balena Etcher是一款革命性的跨平台镜像烧录工…...

VMware虚拟机安装Ubuntu教程:创建独立的Qwen3-14B-AWQ模型测试环境

VMware虚拟机安装Ubuntu教程&#xff1a;创建独立的Qwen3-14B-AWQ模型测试环境 1. 为什么需要虚拟机测试环境 在测试大语言模型时&#xff0c;使用虚拟机可以避免污染宿主机环境。特别是像Qwen3-14B-AWQ这样的模型&#xff0c;依赖项复杂&#xff0c;直接在主机上安装可能会与…...

前端AI新选择:Transformer.js vs TensorFlow.js,你的项目该用哪个?

前端AI新选择&#xff1a;Transformer.js与TensorFlow.js深度技术选型指南 当浏览器逐渐成为新一代计算平台时&#xff0c;前端开发者正面临一个关键抉择&#xff1a;如何在客户端高效部署机器学习能力&#xff1f;我曾为一个医疗咨询项目选择技术方案时&#xff0c;团队在Tran…...