LeetCode 初级 - 买卖股票的最佳时机
买卖股票的最佳时机
给定一个数组,它的第 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。
分析
对于这道题,以普通人的思维来看,一般是对某个元素nums[i](作为买入),找后续最大的nums[j](作为卖出),记录二者的差值,差值最大即利润最大,但显然这样复杂度太高了。
于是我们可以反过来想,对某个元素nums[i](作为卖出),找前面最小的nums[j](作为买入),这样差值最大仍未利润最大。
但显然单单这样是不够的,我们需要做一下优化。我们可以维护一个min变量,记录遍历到元素i以前的最小数值,该数值作为买入,这样当我们遍历计算nums[i]-min的值时,可以保证在该处卖出时所付出的成本总是最低的。于是我们就只要维护min以及取nums[i]-min的最大值即可
代码
class Solution {public int maxProfit(int[] prices) {int min = Integer.MAX_VALUE,profit = 0;for(int i =0;i<prices.length;i++){if(prices[i]<min) {min = prices[i];}if(profit<prices[i]-min){profit = prices[i]-min;}}return profit;}}
LeetCode 初级 - 买卖股票的最佳时机相关推荐
- LeetCode 188. 买卖股票的最佳时机 IV(动态规划)
1. 题目 给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你最多可以完成 k 笔交易. 注意: 你不能同时参与多笔交易(你必须在再次购买 ...
- LeetCode 123. 买卖股票的最佳时机 III(动态规划)
1. 题目 给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你最多可以完成 两笔 交易. 注意: 你不能同时参与多笔交易(你必须在再次购买 ...
- LeetCode #121 买卖股票的最佳时机 贪心 单调栈 动态规划
LeetCode #121 买卖股票的最佳时机 题目描述 给定一个数组,它的第 iii 个元素是一支给定股票第 iii 天的价格. 如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算 ...
- 【算法】贪心算法:LeetCode 714 买卖股票的最佳时机含手续费 、LeetCode 968 监控二叉树
LeetCode 714 买卖股票的最佳时机含手续费 (中等) 题目 描述 给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 :整数 fee 代表了交易股票的手续费用. 你 ...
- 【贪心算法】Leetcode 714. 买卖股票的最佳时机含手续费
[贪心算法]Leetcode 714. 买卖股票的最佳时机含手续费 题目 给定一个整数数组 prices,其中 prices[i]表示第 i 天的股票价格 :整数 fee 代表了交易股票的手续费用. ...
- leetcode - 121.买卖股票的最佳时机
121.买卖股票的最佳时机 ------------------------------------------ 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 如果你最多只允许完成 ...
- 【LeetCode】买卖股票的最佳时机含手续费 [M](动态规划)
714. 买卖股票的最佳时机含手续费 - 力扣(LeetCode) 一.题目 给定一个整数数组 prices,其中 prices[i]表示第 i 天的股票价格 :整数 fee 代表了交易股票的手续费用 ...
- Leetcode 188.买卖股票的最佳时机IV
买卖股票的最佳时机IV 给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你最多可以完成 k 笔交易. 注意: 你不能同时参与多笔交易(你必 ...
- LeetCode - 121. 买卖股票的最佳时机
121. 买卖股票的最佳时机 class Solution {public int maxProfit(int[] prices) {if (prices == null || prices.leng ...
最新文章
- c语言c++语言中静态变量,函数详解
- 十年沉浮,用Python看创业公司消亡史
- leetcode470 Java_Java实现 LeetCode 794 有效的井字游戏 (暴力分析)
- 谷歌浏览器没法安装插件,提示程序包无效
- jena dataset 增删改查
- .NET5全面拥抱Azure云,微软市值重回巅峰,那些年吹过的牛,都实现了!
- RESET MASTER和RESET SLAVE使用场景和说明【转】
- golang高并发的理解
- oracle监听的动态注册和静态注册
- Performance of Every Day Things by Jeffrey Richter PPT and Code
- esx4克隆后的处理工作
- 电子相册系统(六)相片列表显示
- [HDOJ5734]Acperience(数学,公式推导)
- java 调用python脚本的方法
- 电脑小技巧:怎么取消电脑开机密码
- Ribbon 界面介绍(1)
- html 数字大小写转换,数字大小写转化
- 北京最新城市总体规划草案
- notepad++设置背景颜色为豆沙绿
- 移动应用程序设计/开发:jQuery Mobile入门指南