题目:

给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]
输出: 7
解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6-3 = 3 。
示例 2:输入: [1,2,3,4,5]
输出: 4
解释: 在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。注意你不能在第 1 天和第 2 天接连购买股票,之后再将它们卖出。因为这样属于同时参与了多笔交易,你必须在再次购买前出售掉之前的股票。
示例 3:输入: [7,6,4,3,1]
输出: 0
解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。

我的解答:

class Solution {public int maxProfit(int[] prices) {if (prices == null) {return 0;}int length = prices.length;if (length < 2){return 0;}int profit = 0;for (int i = 0, j =i+1; j<length && i<length;){//如果说后面一天的价格比前一天高  则买入if (prices[i] < prices[j]) {int salePrice ;do {salePrice = prices[j];j++;}while (j < length && prices[j] > salePrice);j--;profit += prices[j] - prices[i];i = j +1;j = i+1;}else {i++;j++;}}return profit;}
}

网上最快的解答:

class Solution {public int maxProfit(int[] prices) {int maxprofit = 0;for(int i = 1; i < prices.length; i++){if(prices[i-1] < prices[i]){maxprofit += prices[i] - prices[i-1];}}return maxprofit;}
}

我尝试了下,其实和我的算法一样快。这个算法有个缺点,就是不能知道哪一天买,哪一天卖,但是我的算法是可以知道的。不过人家也没有说要知道,而且这个人思路很值得学习。把问题简化。

算法------买卖股票的最佳时机相关推荐

  1. 代码随想录贪心算法——买卖股票的最佳时机含手续费

    题目 给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 :非负整数 fee 代表了交易股票的手续费用. 你可以无限次地完成交易,但是你每笔交易都需要付手续费.如果你已经购买 ...

  2. 算法-----买卖股票的最佳时机(Java 版本)

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

  3. 【每日一算法】买卖股票的最佳时机

    微信改版,加星标不迷路! 每日一算法-买卖股票的最佳时机 作者:阿广 阅读目录 1 题目 2 解析 1 题目 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 如果你最多只允许完成一笔 ...

  4. 【算法】贪心算法:LeetCode 714 买卖股票的最佳时机含手续费 、LeetCode 968 监控二叉树

    LeetCode 714 买卖股票的最佳时机含手续费 (中等) 题目 描述 给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 :整数 fee 代表了交易股票的手续费用. 你 ...

  5. 力扣算法JS LC [714. 买卖股票的最佳时机含手续费] LC [968. 监控二叉树]

    LC 714. 买卖股票的最佳时机含手续费 给定一个整数数组 prices,其中 prices[i]表示第 i 天的股票价格 :整数 fee 代表了交易股票的手续费用. 你可以无限次地完成交易,但是你 ...

  6. 【贪心算法】Leetcode 714. 买卖股票的最佳时机含手续费

    [贪心算法]Leetcode 714. 买卖股票的最佳时机含手续费 题目 给定一个整数数组 prices,其中 prices[i]表示第 i 天的股票价格 :整数 fee 代表了交易股票的手续费用. ...

  7. 算法训练Day49 | Leetcode121. 买卖股票的最佳时机(只能买卖一次);LeetCode122. 买卖股票的最佳时机II(可以买卖多次)

    目录 Leetcode121. 买卖股票的最佳时机 方法一:暴力解法 1. 思路 2. 代码实现 3. 复杂度分析 4. 思考与收获 方法二:贪心算法 1. 思路 2. 代码实现 3. 复杂度分析 方 ...

  8. 算法训练第五十天 | 123.买卖股票的最佳时机III、188.买卖股票的最佳时机IV

    动态规划part11 123.买卖股票的最佳时机III 题目描述 思路 拓展 188.买卖股票的最佳时机IV 题目描述 思路 易错点 123.买卖股票的最佳时机III 题目链接:123.买卖股票的最佳 ...

  9. LintCode领扣算法问题答案:149. 买卖股票的最佳时机

    149. 买卖股票的最佳时机 描述 假设有一个数组,它的第i个元素是一支给定的股票在第i天的价格.如果你最多只允许完成一次交易(例如,一次买卖股票),设计一个算法来找出最大利润. 样例 1: 输入: ...

最新文章

  1. 智慧城市建设中的五个误区和四大难点
  2. java使用ireport生成报表_JasperReport(3)——Java简单使用IReport生成的文件建立报表...
  3. c++11的10个新特性
  4. github建立静态网站,域名解析和跳转
  5. python邮件正文表格怎么编辑_python怎么把excel写到邮件里
  6. jpa报错No property found for column ‘first_time‘ mapped to field ‘first_time‘
  7. php cdi_使用Fabric8在CDI管理的bean中注入Kubernetes Services
  8. [TJOI2009] 战争游戏
  9. Dell 2850 lsi raid卡使用指南
  10. windows下tomcat7+nginx1.8负载均衡
  11. Visual Studio Code 1.41 发布
  12. matlab 并行 计时,用Zen2跑MATLAB R2020a并行计算负载有点奇怪 - 桌面电脑(Computer)版 - 北大未名BBS...
  13. gtp java 文件传输_GitHub - zhmgczh/GTPService: 围棋GTP协议应用实例(一个自动对弈程序,命令行交互或命令行与GUI对弈)...
  14. 港科百创 | 深光科技完成数千万元Pre-A轮融资
  15. android 如何把图片设置成圆,Android 设置圆形图片 设置圆角图片
  16. 2022 开源之夏 | Serverless Devs 陪你“变得更强”
  17. Android APK文件反编译 查看appid等信息
  18. Java下载excel模板
  19. Python自学笔记————字符串
  20. php GD库的使用

热门文章

  1. 5.Ubuntu下的GIF录制软件peek安装
  2. 1.QT元对象系统、信号槽概述、宏Q_OBJECT
  3. C++知识点19——使用C++标准库(再谈string——string的初始化、赋值、添加、删除、访问)
  4. pycharm安装numpy
  5. 图像处理 区域删除_FotoWorks XL( 图像处理软件 )中文版分享
  6. mysql 编译_mysql 5.7 编译——VS2017
  7. React组件继承的由来
  8. 173. Binary Search Tree Iterator
  9. Java算法之 一致性hash算法原理及实现
  10. 浅谈RAID写惩罚(Write Penalty)与IOPS计算