问题:

可以将问题转化为如下图所示,即求多个累计的收入差

分析:

如果当前位置i的价格比i+1的价格高,则当前不是买入点,则继续判断下一个位置,

如果当前位置i的价格比i+1的价格低,并且i+1仍比i+1+1低,则在当前位置买入,知道i+n比i+n+1大时,卖出。

继续下一轮判断

package com.example.demo;public class Test121 {/*** 多个** @param prices* @return*/public int maxProfit(int[] prices) {if (prices == null || prices.length == 0) {return 0;}int cur = 0;int vally = prices[0];int peak = 0;int income = 0;while (cur < prices.length - 1) {//找到卖出点,谷底while (cur < prices.length - 1 && prices[cur] >= prices[cur + 1]) {cur++;}vally = prices[cur];//找到比当前大的值(即最高点,顶峰)while (cur < prices.length - 1 && prices[cur] <= prices[cur + 1]) {cur++;}peak = prices[cur];income += peak - vally;//如果此时cur仍然没有到最后,则进行再一次循环
        }return income;}public static void main(String[] args) {Test121 t = new Test121();int[] arr = {7, 1, 5, 3, 6, 4};int i = t.maxProfit(arr);System.out.println(i);}
}

leetcode-121-买卖股票的最佳时机相关推荐

  1. LeetCode #121 买卖股票的最佳时机 贪心 单调栈 动态规划

    LeetCode #121 买卖股票的最佳时机 题目描述 给定一个数组,它的第 iii 个元素是一支给定股票第 iii 天的价格. 如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算 ...

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

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

  3. LeetCode - 121. 买卖股票的最佳时机

    121. 买卖股票的最佳时机 class Solution {public int maxProfit(int[] prices) {if (prices == null || prices.leng ...

  4. LeetCode 121:买卖股票的最佳时机 思考分析

    题目描述: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润. 注意:你不能在买入股票 ...

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

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

  6. 105. Leetcode 121. 买卖股票的最佳时机 (动态规划-股票交易)

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

  7. leetcode 121. 买卖股票的最佳时机 (贪心 + 动规 + 双指针

    贪心的思路: 得到最小值,再挨个用数组中的值减去最小值,最终值取一个最大的 class Solution { public:int maxProfit(vector<int>& p ...

  8. LeetCode: 121. 买卖股票的最佳时机(C++)

    题目: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润. 注意你不能在买入股票前卖出股票 ...

  9. 158. Leetcode 121. 买卖股票的最佳时机 (贪心算法-股票题目)

    class Solution:def maxProfit(self, prices: List[int]) -> int:low, max_profit = float("inf&qu ...

  10. LeetCode 121. 买卖股票的最佳时机(Best Time to Buy and Sell Stock)

    简单粗暴的第一种解法: class Solution { public:int maxProfit(vector<int>& prices) {int m = prices.siz ...

最新文章

  1. 【Zookeeper】Zookeeper集群“脑裂”问题处理大全
  2. Ember.js入门教程、博文汇总
  3. 计算机系统与网络技术简答题,计算机与网络技术基础 简答题
  4. 【数据】深度学习从“数据集”开始
  5. pandas中drop用法_python进行数据清理之pandas中的drop用法
  6. 基于spring cloud 的灰度发布实践_【收藏】基于spring cloud灰度发版方案
  7. Wordcounter,使用Lambdas和Fork / Join计算Java中的单词数
  8. python wmi 重启网卡_python使用WMI检测windows系统信息、硬盘信息、网卡信息的方法...
  9. Ubuntu16.04下配置laravel
  10. java虚拟机工作原理_java虚拟机原理及工作原理都是什么?java虚拟机如何运行?...
  11. 确定性钱包的多账户层次结构(bitcoinj使用BIP44)
  12. 推荐一个有效清理电脑桌面广告、流氓软件的方法
  13. 【LG3244】[HNOI2015]落忆枫音
  14. Cadence Allegro 中skill应用教程:让代码替我们打工
  15. 英语语音篇 - 元音自然拼读
  16. 虚拟机主机服务器出现SSH已启用,ESXi去掉 SSH已经启用的警告信息
  17. 线性分式变换(linear fractional transformation)
  18. deeptools | bam to BigWig, 并使用IGV可视化峰图差异
  19. 用友U9 SOA引领企业IT架构全面升级
  20. 【Python3】抓取Github吉祥物Octocat昵图并下载到本地

热门文章

  1. docker中lnmp访问php页面,Docker下部署LNMP工作环境的教程(详细步骤)
  2. HTTP协议中几个状态码
  3. Linux基础知识(1)
  4. resttemplate 请求重试_使用Spring Cloud Ribbon重试请求
  5. java和ssm是什么关系,JAVA --- SSH和SSM的区别
  6. python函数大全和意思_python 之 内置函数大全
  7. Centos 7 修改主机名
  8. 【oracle】查看数据库最近执行了哪些sql语句
  9. 声学测试软件手机版_告别手机转接器,小米双单元Type-C版耳机体验
  10. java中构造器快捷方式_java 构造器 (构造方法)