贪心算法-买卖股票问题

news2025/1/11 8:12:19

贪心算法(Greedy Algorithm)是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是全局最好或最优的算法。贪心算法并不保证总是能得到全局最优解,但它通常能得到不错的解,而且其实现简单,效率高。

贪心算法的基本思路是:

  1. 建立数学模型:首先,将问题抽象化,建立数学模型。
  2. 选择贪心策略:分析问题的特点,确定贪心选择策略。贪心策略是每一步都选择当前状态下的最优解。
  3. 解决子问题:根据贪心策略,将原问题分解成若干个子问题,每个子问题都相对简单,并且易于解决。
  4. 合并解:逐步求解每个子问题,并将解合并,最终得到原问题的解。

贪心算法的特点

  • 贪心选择性质:每一步都选择当前状态下的最优解。
  • 无后效性:即某状态以后的过程不会影响以前的状态,只与当前状态有关。
  • 最优子结构:问题的最优解包含其子问题的最优解。

贪心算法的应用实例

  1. 背包问题:存在最大容量为n的背包,以及其他中体积与价值不等的物品,每一物品的数量是无限的,求背包能装下的最多价值。
  2. 最短路径问题:

 通过这些例子我们可以明白,由于贪心算法的贪心(每一步都选择当前状态下的最优解)以及短视(每一步仅考虑当前),其并不能保证最后能得到全局最优解。

贪心算法的局限性

贪心算法不能保证在所有情况下都得到全局最优解,因为它只关注当前状态下的最优解,而不考虑整体情况。在某些情况下,局部最优的选择可能会导致全局解不是最优的。因此,在使用贪心算法时,需要谨慎选择问题,并验证算法的有效性。

买卖股票的最佳时机Ⅰ

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

给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。

你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。

返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。

示例 1:

输入:[3, 7, 1, 2, 5, 6, 4]
输出:5
解释:在第 3 天(股票价格 = 1)的时候买入,在第 6 天(股票价格 = 6)的时候卖出,最大利润 = 6 - 1 = 5 。


在阅读完题目之后,我们可以轻易的想出一种暴力方法,通过两重循环,找出问题的答案。

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        int tmp = 0;
        int size = prices.size();
        for (int i = 0; i < size; i++) {
            for (int j = i + 1; j < size; j++) {
                if (prices[j] > prices[i]) {
                    tmp = max(tmp, prices[j] - prices[i]);
                }
                else
                    break;
            }
        }
        return tmp;
    }
};

但是这种方法的时间复杂度较高,我们可以对其进行一些优化。

 

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        int minn = prices[0];
        int tmp = 0;
        for(int i = 1;i<prices.size();i++){
            minn = min(prices[i],minn);
            tmp = max(tmp,prices[i]-minn);
        }

        return tmp;
    }
};

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

新版PyTorch:AI任务加速与Intel GPU集成

--->更多内容&#xff0c;请移步“鲁班秘笈”&#xff01;&#xff01;<--- 最近的Pytorch 2.4 推出AI任务加速&#xff0c;提供对Intel GPU的支持。为了进一步加速 AI任务&#xff0c;PyTorch 2.4现在为Intel数据中心GPU Max系列提供支持&#xff0c;该系列将Intel GPU…

Java答题系统练习模拟考试系统

&#x1f4dd;【学霸秘籍】答题系统模拟考试系统&#xff0c;你的提分神器来啦&#xff01;&#x1f680; &#x1f4da; 开篇引入&#xff1a;学习路上的得力助手 嘿&#xff0c;小伙伴们&#xff01;是不是又在为即将到来的考试焦头烂额&#xff1f;&#x1f623; 是不是觉…

二分查找(多版本)

1.基础版 public class erfenchazhao {public int test(int arr[],int target){int i 0; //定义左指针int j arr.length-1;//定义右指针int m; //定义中间值while(i<j){ //判断条件m (ij)>>>1;if(target < arr[m]){ //目标值在左边j m - 1;}else…

【python】在Python代码中执行Linux命令的详细用法教程

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

昇思25天学习打卡营第01天|昇思MindSpore大模型基础介绍

昇思MindSpore和华为昇思MindSpore大模型学习打卡系列文章&#xff0c;本文仅供参考~ 文章目录 前言一、昇思MindSpore是什么&#xff1f;二、执行流程三、设计理念四、层次结构五、Huawei昇腾AI全栈 前言 随着计算机大模型的不断发展&#xff0c;Ai这门技术也越来越重要&#…

免费【2024】springboot 宠物领养救助平台的开发与设计

博主介绍&#xff1a;✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围&#xff1a;SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…

Prozyme糖样本检测平台--GlykoPrep® Rapid N-Glycan Preparation with APTS

单克隆抗体已成为生物制药行业具有潜力的新兴蛋白候选药物。其药物研发流程包括一系列精细的控制和评估步骤&#xff0c;需要仔细、严格地监测目标化合物的治疗稳定性及有效性。因此&#xff0c;在商业化前的每个阶段对单克隆抗体进行全面表征是极其有益的。在大量研究成熟的蛋…

用Python打造精彩动画与视频,3.1 安装和设置 MoviePy

第3章 开始你的第一个视频项目 MoviePy 3.1 安装和设置 MoviePy 视频处理在多媒体内容创作中起着至关重要的作用。MoviePy 是一个用于视频编辑的 Python 库&#xff0c;它可以让你轻松地进行视频剪辑、合并、特效添加等操作。通过 MoviePy&#xff0c;你可以用简单的 Python…

基于Java+SpringBoot+Vue的的课程作业管理系统

前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 哈喽兄弟们&#xff0c;好久不见哦&#xff5…

IEEE 快刊合集!期刊选的好,JCR1区照样轻松拿下~

【SciencePub学术】今天小编给大家推荐2本计算机领域的SCI&#xff0c;均隶属于IEEE出版社&#xff0c;虽比不上前几日给大家介绍的IEEE-Trans系列的那本期刊优秀&#xff0c;但是放在行业内还是很拿得出手的。 现在提交&#xff0c;可免费预审&#xff0c;预审通过后录用率100…

失业负债女孩,下班后用AI做副业,快速翻身上岸

** - 我们应该把负债看成是成长的助力&#xff0c;而不是搞垮骆驼的稻草。 负债上岸&#xff0c;没有更多的捷径&#xff0c;唯有“开源节流”&#xff0c;节流就是尽可能节约花费&#xff0c;把生活支出减少&#xff0c;开源就是尽可能多的增加自己的副业收入。 负债后的至…

【通俗理解】“多即不同”观念的科学内涵——从对称破缺到科学层次结构的探索

【通俗理解】“多即不同”观念的科学内涵——从对称破缺到科学层次结构的探索 对称破缺与科学层次结构的类比 你可以把对称破缺比作一个“建筑师”&#xff0c;它构建了科学大厦的基础框架。而科学层次结构则是一个“城市规划师”&#xff0c;它规划了这些基础框架如何组合成一…

【附精彩文章合辑】跨界对话:黄仁勋与扎克伯格的“外套交换”与未来展望

跨界对话&#xff1a;黄仁勋与扎克伯格的“外套交换”与未来展望 在科技界的浩瀚星空中&#xff0c;两位璀璨的名字如同双子星般交相辉映——NVIDIA的创始人兼CEO黄仁勋&#xff08;Jensen Huang&#xff09;与Facebook&#xff08;现更名为Meta&#xff09;的掌舵人马克扎克伯…

快速开启react+electron应用,搭建启动问题

注意&#xff1a; React 本地启动在 3000端口Electron 在创建 BrowserWindow 的时候&#xff0c;可以读取本地的文件或者是 url开发环境 读取localhost: 3000生产环境 需要加载本地成型以后的本地文件&#xff0c;打包的时候再考虑 一 react 脚手架 create-react-app 快速搭建…

iTerm2使用手册

iTerm2字体 参考文章&#xff1a;iTerm2 安装 SF Mono 字体 iTerm2默认的字体不太好看&#xff0c;感觉Mac自带的终端的字体看起来很舒服&#xff0c;于是让iTerm2和Mac自带终端保持一致 找到Terminal.app下面的字体 执行 cp *.otf ~/Library/Fonts/ 然后在iTerm2中设置字…

ElementUI,el-input输入框max、min限制最大最小值失效

<el-input type"number" v-model"loadNodesNum" :min"1" :max"5" style"width: 240px;overflow: hidden;"><el-button slot"append" click"handleMaxLoadNum(1)">负载最多的节点TOP</el…

记一次JS到WAF绕过上传

一、前言 某渗透项目中和队友配合挖到一个通用系统漏洞&#xff0c;主要对JS接口进行分析&#xff0c;经历一波绕waf的曲折最终getshell&#xff0c;文笔粗劣&#xff0c;大佬勿喷。 二、JS分析 在看到某系统仅仅一个登陆框&#xff0c;一波弱口令尝试和目录扫描&#xff0c…

PHP教务排课系统小程序源码

教务排课系统&#xff1a;智慧教育的新篇章 &#x1f4da; 开篇&#xff1a;告别手动排课的繁琐时代 在这个信息爆炸的时代&#xff0c;教育领域的每一个细节都在向智能化迈进。你是否还记得&#xff0c;曾经老师们为了编排一张完美的课程表&#xff0c;需要花费多少时间和精…

JMeter接口测试-5.JMeter高级使用

JMeter高级使用 案例&#xff1a; 用户登录后-选择商品-添加购物车-创建订单-验证结果 问题&#xff1a; JMeter测试中&#xff0c;验证结果使用断言&#xff0c;但断言都是固定的内容假如要判断的内容(预期内容)是在变化的, 有时候还是不确定的, 那该怎么办呢? 解决&…

【MySQL】访问mysqld的方式{命令行客户端/vscode-c-api客户端/图形化界面:mysql/navicat}

文章目录 1.访问数据库2.vscode-c-api客户端方法一&#xff1a;重新安装相关数据方法二&#xff1a;直接使用之间安装mysql的附加数据查看mysql文档方式使用c-mysql-api库访问mysqld代码理解mysql_res 3.图形化界面 1.访问数据库 命令行式客户端向mysqld下达指令 网页版 图形化…