力扣题目系列:121. 买卖股票的最佳时机
刷题系列博客链接:机试题目
目录
题目及示例
我的题解
题目及示例
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。
如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。
注意你不能在买入股票前卖出股票。
示例 1:输入: [7,1,5,3,6,4] 输出: 5
解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。
示例 2:输入: [7,6,4,3,1] 输出: 0
解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
我的题解
//暴力解法,效率极低
class Solution {public int maxProfit(int[] prices) {int money = 0;int pro = 0;for(int i = 0; i < prices.length-1; ++i){for(int j = i+1; j < prices.length; ++j){pro = prices[j]-prices[i];if(pro > money && pro > 0){money = pro;}}}return money;}
}
//改进一下,记录买入的最低价,在每一天计算卖出价,记录下最大利润,效率明显提升
class Solution {public int maxProfit(int[] prices) {if(prices.length <= 1)return 0;int min = prices[0], max = 0;for(int i = 1; i < prices.length; i++) {max = Math.max(max, prices[i] - min); //计算卖出价,记录下最大利润min = Math.min(min, prices[i]); //记录买入的最低价}return max;}
}
//定义两个边界i和j,i在j的左边,i右边的数要比price[i]大,否则移动i,效率最高
class Solution {public int maxProfit(int[] prices) {int result = 0;int i = 0;for (int j = 0; j < prices.length; j++) {if (j > i) { //i在j的左边if (prices[j] >= prices[i]) { //i右边的数要比price[i]大result = result > (prices[j] - prices[i]) ? result : (prices[j] - prices[i]);//result = Math.max(result, prices[j] - prices[i]); //两句是等价的,但是 ?: 操作比 Math.max() 快} else { //否则移动ii = j;}}}return result;}
}
力扣题目系列:121. 买卖股票的最佳时机相关推荐
- 力扣122题:买卖股票的最佳时机 II
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格.设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票). **注意:**你不能同时参与多笔交易(你必须 ...
- leetcode系列-121. 买卖股票的最佳时机
题目描述: 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格.你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票. 设 ...
- _42LeetCode代码随想录算法训练营第四十二天-动态规划 | 121.买卖股票的最佳时机、122.买卖股票的最佳时机II
_42LeetCode代码随想录算法训练营第四十二天-动态规划 | 121.买卖股票的最佳时机.122.买卖股票的最佳时机II 题目列表 121.买卖股票的最佳时机 122.买卖股票的最佳时机II 1 ...
- 力扣:121. 买卖股票的最佳时机 题解
力扣:121. 买卖股票的最佳时机 1 题目描述 2 题解 1 题目描述 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格. 你只能选择 某一天 ...
- 力扣刷题day42|121买卖股票的最佳时机、122买卖股票的最佳时机II
文章目录 121. 买卖股票的最佳时机 贪心思路 动态规划思路 动态规划五部曲 122. 买卖股票的最佳时机II 贪心思路 动态规划思路 动态规划五部曲 121. 买卖股票的最佳时机 力扣题目链接 给 ...
- 力扣leetcode之Java刷题121买卖股票的最佳时机
121. 买卖股票的最佳时机 题目: 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格. 你只能选择某一天买入这只股票,并选择在未来的某一 ...
- leetcode - 121.买卖股票的最佳时机
121.买卖股票的最佳时机 ------------------------------------------ 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 如果你最多只允许完成 ...
- 《LeetCode刷题》—121. 买卖股票的最佳时机
<LeetCode刷题>-121. 买卖股票的最佳时机 一.题目内容 原题连接:https://leetcode.cn/problems/best-time-to-buy-and-sell ...
- leetcode.121. 买卖股票的最佳时机(best-time-to-buy-and-sell-stock)
文章目录 121. 买卖股票的最佳时机 代码与思路 暴力法 一次遍历 单调栈 122. 买卖股票的最佳时机 II 代码与思路 股票问题系列通解 121. 买卖股票的最佳时机 给定一个数组,它的第 i ...
- (C++)Leetcode狂刷200题——标签“数组篇--简单难度10道 #121. 买卖股票的最佳时机
第五道题 #121. 买卖股票的最佳时机 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大 ...
最新文章
- 【桌面虚拟化】之五PCoIP
- Linux下查看当前文件大小的命令
- 学习手记(2021/3/19~?)
- 小程序 仿麦当劳_手机上的麦当劳和星巴克:为什么现在首先使用移动应用程序...
- vue在html中写style,vue开发之style(六)(CSS页面布局之样式、背景、文字)
- 工作资讯003---甘特图
- 面向对象的JavaScript-008-Function介绍
- html用户注册md5,用web浏览框实现MD5加密
- 【测试】使用xtts V4迁移数据
- es-从搜索中检索选定的字段
- 乐嘉性格色彩-4色特性,学习感悟
- 微信自定义分享功能实现
- 简述MACD指标以及它的组成MACD、MACDsignal和MACDhist
- 2021年中国压力-容积回路系统市场趋势报告、技术动态创新及2027年市场预测
- 【地图匹配(ST-matching)】GPS 轨迹数据预处理——T-Driver数据集【持续更新中】
- linux命令发请求,Linux命令发送Http的get或post请求(curl和wget两种方法)
- 计算机科学个人陈述中文,留学文书写作范例-计算机科学(个人陈述)
- table 表格的一些属性
- ZCMU--5193: 韩信点兵(C语言)
- 第14章 Linux终端设备驱动之终端设备
热门文章
- java转换ppt,ppt转成图片 乱码问题解决
- 小宝宝即将来到这个世界,希望迎接他的是大家的祝福
- Wilcoxon秩和检验简介与MATLAB实现
- 排序算法专题-快速排序
- 【LeetCode】【数组】题号:*442,重复元素出现两次
- 从零基础入门Tensorflow2.0 ----一、1.1 实战分类模型(fashion_mnsit数据集,数据读取与展示)
- 运用ENVI bandmath对多波段进行计算
- 研究城市空间结构的入门级文献及书籍推荐(待更新)
- IDL实现植被覆盖度计算
- Python 3.65 安装geopandas