问题描述

给定一个数组,它的第 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 {int findMin(int x,int[] prices) {for(int i=x+1;i<prices.length;i++) {if(prices[i]>prices[x])return x;x=i;}return x;}int findMax(int x,int[] prices) {for(int i=x+1;i<prices.length;i++) {if(prices[i]<prices[x])return x;x=i;}return x;}public int maxProfit(int[] prices) {if(prices==null||prices.length==0)return 0;int min=0;//极小值,买入点int max=0;//极大值,卖出点int res=0;while(max!=prices.length-1&&min!=prices.length-1) {//找极小值min=findMin(max, prices);//找最大值max=findMax(min, prices);if(max>min&&prices[max]>prices[min]) {res+=prices[max]-prices[min];}}return res;}
}

Leetcode122. 买卖股票的最佳时机 II(贪心)相关推荐

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

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

  2. leetcode122. 买卖股票的最佳时机 II

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

  3. 159. Leetcode 122. 买卖股票的最佳时机 II (贪心算法-股票题目)

    class Solution:def maxProfit(self, prices: List[int]) -> int:result = 0for i in range(1,len(price ...

  4. 力扣贪心算法专题(一)455.分发饼干 376. 摆动序列 53. 最大子序和 122.买卖股票的最佳时机II 1005.K次取反后最大化的数组和 思路及C++实现 贪心算法 动态规划

    文章目录 贪心算法 455.分发饼干 思路 步骤 代码 376. 摆动序列 贪心算法 思路 分析 代码 动态规划 思路 步骤 代码 53. 最大子序和 暴力解法 双层for循环 贪心算法 思路 分析 ...

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

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

  6. _28LeetCode代码随想录算法训练营第二十八天-贪心算法 | 122.买卖股票的最佳时机II 、55.跳跃游戏、45.跳跃游戏II

    _28LeetCode代码随想录算法训练营第二十八天-贪心算法 | 122.买卖股票的最佳时机II .55.跳跃游戏.45.跳跃游戏II 题目列表 122.买卖股票的最佳时机II 55.跳跃游戏 45 ...

  7. 代码随想录算法训练营第三十二天_第八章_贪心算法 | 122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II

    LeetCode 122.买卖股票的最佳时机II 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格.设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票 ...

  8. 力扣 买卖股票的最佳时机II

    力扣 买卖股票的最佳时机II 题目描述 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票). 注 ...

  9. JavaScript买卖股票的最佳时机 II

    买卖股票的最佳时机 II 前言 1.什么是贪心算法 2.LeetCode题目 3.解法 4.代码实现 总结 前言 1.什么是贪心算法 贪心法,又称贪心算法,贪婪算法,在对问题求解时,总是做出在当前看来 ...

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

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

最新文章

  1. 线性表的存储结构总结
  2. linux下将硬件时钟调整为与本地时钟一致
  3. XGBoost的理解
  4. sqlserver 更新 datetime 数据_获取股票分笔数据存储本地
  5. Mysql数据字典导出
  6. msdn windows server 按电源事件api_【tornado源码分析】I/O事件循环机制与多进程
  7. 找呀志_ContentResolver操作ContentProvider数据
  8. SPASVO 软件生命周期管理 ALM V2.1 正式发布!
  9. 《疯狂Java讲义》(第5版) 李刚
  10. 【原创】2021-2001中国科技统计年鉴面板数据、中国科技年鉴(830个指标,可直接用)
  11. 水晶报表CrystalReports很强大也很简单!
  12. 使用Excel功能抓取网页表格数据
  13. 如何通过a链接实现图片下载
  14. Android Canvas API总结和使用方法
  15. 人工智能系列之基本框架梳理
  16. (精华2020年5月4日更新) vue教程篇 axio的使用
  17. 全国青少年计算机考试官网,全国青少年计算机考试开考 每年组织四次
  18. 做ppt课件直播(课堂直播)使用云课堂直播软件的教程
  19. Android_水平滚动控件HorizontalScrollView
  20. PPT配色的实用小技巧分享

热门文章

  1. Python_三级菜单
  2. java基础之输入语句
  3. 充分统计量(Sufficient Statistics)
  4. 波士顿房价预测python决策树_百度飞浆paddlepaddle之波士顿房价预测(二)
  5. 拓端tecdat|R语言推特twitter网络转发可视化分析
  6. 全国各地收货详细地址_2020高考成绩在哪里查询 2020全国各地高考分数查询时间地址最新...
  7. 【Caffe代码解析】convert_imageset
  8. 基于迁移学习的mini-imagenet数据分类实践
  9. python地图空间可视化神器folium实现以阿里巴巴园区为中心绘制租房小区位置信息
  10. SQLServer实现将VARCHAR字符型对象转化为int/float数值型对象后排序、对VARCHAR对象截取指定部分再转化为数值对象进行排序