刷题系列博客链接:机试题目

目录

题目及示例

我的题解


题目及示例

给定一个数组,它的第 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. 买卖股票的最佳时机相关推荐

  1. 力扣122题:买卖股票的最佳时机 II

    给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格.设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票). **注意:**你不能同时参与多笔交易(你必须 ...

  2. leetcode系列-121. 买卖股票的最佳时机

    题目描述: 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格.你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票. 设 ...

  3. _42LeetCode代码随想录算法训练营第四十二天-动态规划 | 121.买卖股票的最佳时机、122.买卖股票的最佳时机II

    _42LeetCode代码随想录算法训练营第四十二天-动态规划 | 121.买卖股票的最佳时机.122.买卖股票的最佳时机II 题目列表 121.买卖股票的最佳时机 122.买卖股票的最佳时机II 1 ...

  4. 力扣:121. 买卖股票的最佳时机 题解

    力扣:121. 买卖股票的最佳时机 1 题目描述 2 题解 1 题目描述 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格. 你只能选择 某一天 ...

  5. 力扣刷题day42|121买卖股票的最佳时机、122买卖股票的最佳时机II

    文章目录 121. 买卖股票的最佳时机 贪心思路 动态规划思路 动态规划五部曲 122. 买卖股票的最佳时机II 贪心思路 动态规划思路 动态规划五部曲 121. 买卖股票的最佳时机 力扣题目链接 给 ...

  6. 力扣leetcode之Java刷题121买卖股票的最佳时机

    121. 买卖股票的最佳时机 题目:   给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格.   你只能选择某一天买入这只股票,并选择在未来的某一 ...

  7. leetcode - 121.买卖股票的最佳时机

    121.买卖股票的最佳时机 ------------------------------------------ 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 如果你最多只允许完成 ...

  8. 《LeetCode刷题》—121. 买卖股票的最佳时机

    <LeetCode刷题>-121. 买卖股票的最佳时机 一.题目内容 原题连接:https://leetcode.cn/problems/best-time-to-buy-and-sell ...

  9. leetcode.121. 买卖股票的最佳时机(best-time-to-buy-and-sell-stock)

    文章目录 121. 买卖股票的最佳时机 代码与思路 暴力法 一次遍历 单调栈 122. 买卖股票的最佳时机 II 代码与思路 股票问题系列通解 121. 买卖股票的最佳时机 给定一个数组,它的第 i ...

  10. (C++)Leetcode狂刷200题——标签“数组篇--简单难度10道 #121. 买卖股票的最佳时机

    第五道题 #121. 买卖股票的最佳时机 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大 ...

最新文章

  1. 【桌面虚拟化】之五PCoIP
  2. Linux下查看当前文件大小的命令
  3. 学习手记(2021/3/19~?)
  4. 小程序 仿麦当劳_手机上的麦当劳和星巴克:为什么现在首先使用移动应用程序...
  5. vue在html中写style,vue开发之style(六)(CSS页面布局之样式、背景、文字)
  6. 工作资讯003---甘特图
  7. 面向对象的JavaScript-008-Function介绍
  8. html用户注册md5,用web浏览框实现MD5加密
  9. 【测试】使用xtts V4迁移数据
  10. es-从搜索中检索选定的字段
  11. 乐嘉性格色彩-4色特性,学习感悟
  12. 微信自定义分享功能实现
  13. 简述MACD指标以及它的组成MACD、MACDsignal和MACDhist
  14. 2021年中国压力-容积回路系统市场趋势报告、技术动态创新及2027年市场预测
  15. 【地图匹配(ST-matching)】GPS 轨迹数据预处理——T-Driver数据集【持续更新中】
  16. linux命令发请求,Linux命令发送Http的get或post请求(curl和wget两种方法)
  17. 计算机科学个人陈述中文,留学文书写作范例-计算机科学(个人陈述)
  18. table 表格的一些属性
  19. ZCMU--5193: 韩信点兵(C语言)
  20. 第14章 Linux终端设备驱动之终端设备

热门文章

  1. java转换ppt,ppt转成图片 乱码问题解决
  2. 小宝宝即将来到这个世界,希望迎接他的是大家的祝福
  3. Wilcoxon秩和检验简介与MATLAB实现
  4. 排序算法专题-快速排序
  5. 【LeetCode】【数组】题号:*442,重复元素出现两次
  6. 从零基础入门Tensorflow2.0 ----一、1.1 实战分类模型(fashion_mnsit数据集,数据读取与展示)
  7. 运用ENVI bandmath对多波段进行计算
  8. 研究城市空间结构的入门级文献及书籍推荐(待更新)
  9. IDL实现植被覆盖度计算
  10. Python 3.65 安装geopandas