【贪心算法2】

ops/2025/3/10 18:26:12/

力扣122.买卖股票最佳时机Ⅱ

链接: link

思路

要求最大利润,可以分解成子问题求解,在最低价格买入,最高价格卖出。
假如第0天价格最低,第3天价格最高,利润=prices[3] - pricnes[0],
可以将利润公式拆解成
(prices[3]-prices[2])+(prices[2]-prices[1])+(prices[1]-prices[0])
最终变成了求相邻两天的利润,所以可以得到一个关于利润的列表,只需要将这个列表大于0的相加即可求出最大利润

方法1:

class Solution {public int maxProfit(int[] prices) {int res = 0;for(int i = 1;i<prices.length;i++){res += Math.max(prices[i] - prices[i-1],0);}return res;}
}

相似题型

思路

上一道题是求利润最大化,而这道题是只能进行一次买卖,要求这一次利润最大
121.买卖股票的最佳时机
链接: link

class Solution {public int maxProfit(int[] prices) {int res = 0;int minPrice = prices[0];for (int p : prices) {res = Math.max(res, p - minPrice);minPrice = Math.min(minPrice, p);}return res;}
}

55.跳跃游戏
链接: link

class Solution {public boolean canJump(int[] nums) {if(nums.length == 1) return true;int cover = 0;for(int i =0;i<=cover;i++){cover = Math.max(i + nums[i],cover);if(cover >= nums.length - 1){return true;}}return false;}
}

45.跳跃游戏Ⅱ

思路

这道题需要记录2个距离,一个是当前位置能走的最大距离和下一步能走的最大距离,当下一步能走的最大距离覆盖终点即为最优解。注意要先更新下一步最大距离,当i=当前最大距离时再更新当前最大距离。
链接: link

class Solution {public int jump(int[] nums) {if (nums.length == 1)return 0;int cover_1 = 0; // 当前位置的覆盖范围int cover_2 = 0; // 下一个位置的覆盖范围int cnt = 0; // 记录跳次数for (int i = 0; i < nums.length; i++) {cover_2 = Math.max(i + nums[i], cover_2);// 此时只需要走一步即可到达终点if (cover_2 >= nums.length - 1) {cnt++;break;}// 走到当前覆盖的最大区域时,更新下一步可达的最大区域if (i == cover_1) {cover_1 = cover_2;cnt++;}}return cnt;}
}

http://www.ppmy.cn/ops/164724.html

相关文章

AI 智能:开拓未知疆域的科技先锋

在当今科技迅猛发展的浪潮中&#xff0c;AI 智能无疑是最耀眼的弄潮儿&#xff0c;持续重塑着我们生活与工作的方方面面。然而&#xff0c;在这片广袤的技术海洋里&#xff0c;还有诸多潜藏在深处、尚未被广泛挖掘与讨论的领域&#xff0c;它们代表着 AI 智能未来发展的新方向&…

【音视频】RTP封包H265信息

RTP 含义 RTP 是一种专门为 实时数据传输 设计的网络协议。这里的 "实时数据" 主要指的是 音频 和 视频 这类对传输延迟非常敏感的数据。想象一下&#xff0c;你在进行视频通话或者观看在线直播&#xff0c;你希望画面和声音能够流畅地、几乎同步地到达&#xff0c;而…

大语言模型(LLM)和嵌入模型的统一调用接口

ChatModelFactory、EmbeddingModelFactory 讲解代码&#xff1a;import os from dotenv import load_dotenv, find_dotenv_ load_dotenv(find_dotenv())from langchain_openai import ChatOpenAI, OpenAIEmbeddings, AzureChatOpenAI, AzureOpenAIEmbeddingsclass ChatModelF…

微信小程序接入deepseek

先上效果 话不多说&#xff0c;直接上代码&#xff08;本人用的hbuilder Xuniapp&#xff09; <template><view class"container"><!-- 聊天内容区域 --><scroll-view class"chat-list" scroll-y :scroll-top"scrollTop":…

全域网络安全防御 健全网络安全防护体系

网络安全基本概念 网络安全&#xff08;Cyber Security&#xff09;是指网络系统的硬件、软件及其系统中的数据受到保护&#xff0c;不因偶然的或者恶意的原因而遭受到破坏、更改、泄露&#xff0c;系统连续可靠正常地运行&#xff0c;网络服务不中断&#xff0c;使网络处于稳…

k-Shape:高效准确的聚类方法

引言 时间数据在许多学科中的扩散和无处不在&#xff0c;已经对时间序列的分析和挖掘产生了极大的兴趣。聚类是最流行的数据挖掘方法之一&#xff0c;不仅因为它的探索性&#xff0c;而且作为其他技术的预处理步骤或子程序。常用的有-means聚类算法。本文介绍了一种新的时间序…

MySQL 5.7.40 主从同步配置教程

MySQL 主从同步能有效提升数据冗余备份与负载均衡。下面我将以 MySQL 5.7.40 版本为例&#xff0c;详细讲解如何进行主从同步配置。 MySQL 5.7.40 主从同步配置教程 一、环境准备 假设我们有两台服务器&#xff0c;一台作为主服务器&#xff08;Master&#xff09;&#xff…

let、const和var的区别

文章目录 一、概述二、var变量的问题与限制三、let、const和var的区别3.1、作用域‌3.2、变量提升&#xff08;Hoisting&#xff09;‌3.3、重复声明3.4、可变性‌3.5、 全局对象属性‌3.6、初始值设置‌‌ 四、总结五、实践使用 一、概述 在JavaScript中&#xff0c;let、con…