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

每日一题 ###121买卖股票的最佳时机

仅以此记录所学所想,如有错误,还望指正。

首次尝试

1、我小小的脑子只能想出暴力解法,结果是超时了。

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

我也知道肯定是两层for循环,O(n^2)的时间复杂度遭了。但是我想不明白如何只用一次遍历解决问题。思考五分钟,跑去看题解了。(下次多思考会儿)

题解

class Solution {
public:int maxProfit(vector<int>& prices) {int minprice=1e5;int maxprofit=0;for(int price:prices){maxprofit=max(maxprofit,price-minprice);minprice=min(minprice,price);}return maxprofit;}};
解题思路:

1、一次遍历+贪心,动态记录最小值和最大利润。每次都假设当天卖出,利润最大是当天价-之前最低的价格。再用这个利润和历史最高利润比较,取最大值。
2、先maxprofit,后minprice,是因为顺序倒置后,第一天就会出问题,最低价是自己,利润为0,同天买入卖出。

学习收获:

1、第一次看for(int price:prices)这种语法,之前一直没用过。
2、感觉自己无法独立想出这种好方法啊,急需解决。

http://www.zskr.cn/news/18504.html

相关文章:

  • LibreChat-图文并茂手把手教你界面配置 | Adorable LibreChat Interface Configuration Guide
  • GAE-广义优势估计算法介绍
  • RAG-检索增强生成
  • C语言vsC++
  • 20251010 之所思 - 人生如梦
  • 4.布局系统
  • 虚拟环境QA
  • day009
  • HTTP OPTIONS 方法详解:从原理到实践
  • 详解 `a, b = b, a + b`:执行逻辑、常见误区与赋值符号辨析
  • iPhone手机越狱后出现闪退的解决方法
  • 学习意志:“柚子曲线”与圆的交点个数的代数证明
  • 【黑马python】2.Python 字符串
  • FineReport自定义登录系统技术 - 详解
  • 实验报告2(简单实现图书馆管理系统)
  • 12. 对话框
  • AI产品经理要了解的算法有哪些?
  • JAVA - LinkedList 与 ArrayList 区别和 LinkedList 的四大接口解析
  • 完整教程:一文读懂费用分析:定义、分类与成本费用区别
  • AirBattery - 在Mac上实时监控所有苹果设备电量
  • 淘宝NPM镜像地址https://registry.npm.taobao.org不可用
  • 6 CF1034 div3 题解
  • 5 ABC413 题解
  • 4 CF 1032 div3 题解
  • the charm of Chinese language
  • 完整教程:lua代码解析1
  • system表空间丢失部分文件恢复---惜分飞
  • 二维数点
  • [20251010]建立完善tpt的prr.sql脚本.txt
  • Windows 电脑安装 XTerminal 1.25.1 x64 版(带安装包下载关键词)​