力扣日记121

news/2024/11/18 2:32:01/

1. 题目

LeetCode 121 买卖股票的最佳时机

1.1 题意

给定每天股价,选择一天买入一天卖出,时间上满足先后顺序,求最大利润

1.2 分析

时间复杂度在O(n)

1 <= prices.length <= 10e5

简单想到对于某个位置找前面出现的最小值和后面出现的最大值,然后做差。
对于每个位置每次查找时间复杂度上O(n^2),可以先查找,用数组记录下,然后

1.3 我的解法

class Solution {
public:int maxProfit(vector<int>& prices) {// get sizeint n = prices.size();// store pre min and suffex max// 细节开大两个位置,避免越界检查vector<int> preMin(n+2, INT_MAX);vector<int> sufMax(n+2, INT_MIN);for(int i=1; i<=n; i++){preMin[i] = min(preMin[i-1], prices[i-1]);// sufMax 实际是逆序,分两个循环写可以更好满足时空局部性,性能会更好// 这里偷懒写一块了就sufMax[n+1-i] = max(sufMax[n+2-i], prices[n-i]);}// fins ansint ans = 0;for(int i=1;i<n;i++){// 这里小细节注意数组具体含义ans = max(ans, sufMax[i] - preMin[i]);}return ans;}
};

1.4 学习题解反思

我的解法时间复杂度O(n), 空间复杂度O(n)

题解中一次遍历完成,又是学到了的一天

有点类型经典的打导弹那题
一次遍历,每次记录下当前的最小股价和当前最大利润,
如果遇到最小股价即可更新,为什么可以更新?因为再往后遍历的高股价,是满足买这之前的所有的股价,所以选择更新最低的股价就行

2.4 bug日记

注意下标

2. 后记

仅分享自己的想法,有意见和指点非常感谢


http://www.ppmy.cn/news/413176.html

相关文章

mysql中json_extract的使用方法

mysql中json_extract的使用方法 前言 mysql5.7版本开始支持JSON类型字段&#xff0c;本文详细介绍json_extract函数如何获取mysql中的JSON类型数据json_extract可以完全简写为 ->json_unquote(json_extract())可以完全简写为 ->>下面介绍中大部分会利用简写 创建示…

什么耳机适合跑步、挑选五款最佳的跑步耳机推荐

在进行户外跑步、骑行等运动&#xff0c;往往会感到枯燥乏味&#xff0c;很难坚持下去&#xff0c;就像我经常跑一圈就觉得没了动力&#xff0c;但是当我戴上耳机听音乐跑步时&#xff0c;不知不觉就结束了&#xff0c;就感觉时间过得很快。不过话有说回来&#xff0c;适合跑步…

python修改悦跑圈数据_悦跑圈数据导出 悦跑圈新版本支持跑表、跑步机数据接入 - 电脑常识 - 服务器之家...

悦跑圈数据导出 悦跑圈新版本支持跑表、跑步机数据接入 发布时间:2017-05-07 来源:服务器之家 11月11日,跑步软件悦跑圈在Appstore上线了新版本iOS1.5.4/Android 1.7.2.0。被问到为何选择在双11当天上线Appstore,悦跑圈相关负责人回答说纯属巧合。这其中有何深意不得而知,…

跑步机上的精彩人生——Linus大神传奇

全面学python的时代&#xff0c;作为程序员你怎么看&#xff1f; https://edu.csdn.net/topic/python115?utm_sourcecsdn_bw 本文来自微信公众号&#xff1a;格友 在这样的软件时代里&#xff0c;越来越多的人工作时离不开电脑&#xff0c;于是便有了各种各样的操作电脑的方式…

查看苹果产品保修状态

https://checkcoverage.apple.com/cn/zh/

苹果官网查询产品的激活日期教程

PS&#xff1a;本方法支持 iPhone/iPad/iPod/Apple Watch/Mac 等所有苹果产品。 如何通过苹果设备序列号快速查询到设备的激活日期呢&#xff1f;分为以下两种情况&#xff1a; 情况一&#xff1a;设备在保修期内 第一步&#xff1a;进入下方网站&#xff0c;然后输入需要查…

有什么好用的苹果群控软件?

说到群控软件&#xff0c;我们首先要明白什么是群控软件&#xff1f;群控软件是指一台电脑能够操控多台手机设备&#xff0c;并且可实现同步操作&#xff0c;极大程度上节省人工成本&#xff0c;提高办公效率。 生活中常见的群控软件一般安卓的比较多&#xff0c;但是购买苹果…

苹果微信多开_苹果手机微信双开,微信多开有哪些可以推荐的?

前言 相信很多手机用户&#xff0c;需要用到一个以上微信。安卓用户大多数机型都有内置的微信多开功能&#xff0c;iPhone用户对此需求比较强烈&#xff0c;而且iphone本身是不支持微信多开的&#xff0c;这也是苹果iOS生态不允许的。本文推荐下市面上的苹果手机微信多开软件&a…