博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【一天一道LeetCode】#122. Best Time to Buy and Sell Stock II
阅读量:4197 次
发布时间:2019-05-26

本文共 1031 字,大约阅读时间需要 3 分钟。

一天一道LeetCode

本系列文章已全部上传至我的github,地址:

欢迎大家关注我的新浪微博,
欢迎转载,转载请注明出处

(一)题目

Say you have an array for which the ith element is the price of a given stock on day i.

Design an algorithm to find the maximum profit. You may complete as many transactions as you like (ie, buy one and sell one share of the stock multiple times). However, you may not engage in multiple transactions at the same time (ie, you must sell the stock before you buy again).

(二)解题

题目大意:相比于上题来说,本题有多次买卖的机会。不过,买完之后卖了才能继续买。

解题思路:本题可以采用贪心算法,每次买卖都获取当前的最优值。
思路很简单,每次买卖取得利益最大化,即递增区间,一旦破坏了递增就卖,然后买下一个。遍历完了之后就获得了整体的利益最大化。
具体解释见代码:

class Solution {public:    int maxProfit(vector
& prices) { int size = prices.size(); int max = 0; for(int i = 0 ; i < size ; ) { int j = i; while(j+1
prices[j]) j++;//一旦破坏了递增就停下来 if(j==i) i++;//一开始就不递增,就直接考虑下一个 else { max+=prices[j]-prices[i];//计算当前最大利润,叠加到全部利润上 i = j+1;//买下一个 } } return max; }};
你可能感兴趣的文章
[转]在ASP.NET 2.0中操作数据::创建一个数据访问层
查看>>
Linux命令之chmod详解
查看>>
【java小程序实战】小程序注销功能实现
查看>>
Java中子类能否继承父类的私有属性和方法
查看>>
JVM内存模型详解
查看>>
(二)Git--工作区和暂存区、管理修改与撤销
查看>>
(七)Git--自定义Git
查看>>
(五)Git--分支管理
查看>>
(四)Git--远程仓库
查看>>
(六) Git--标签管理
查看>>
java中继承,子类是否继承父类的构造函数
查看>>
什么是Spring Cloud ?
查看>>
pyqt实现界面化编程
查看>>
qt写DLL文件并调用和出现的问题分析
查看>>
工厂模式(Factory)-设计模式(一)
查看>>
建造者模式(Builder)-设计模式(三)
查看>>
初学Java必备基础知识,编程领域你需要掌握的关键点!
查看>>
阿里五年Java程序员的总结,献给还在迷茫中的你!
查看>>
程序员身上有异味,同事为什么都不会直接告诉他?
查看>>
Java、C、C+ +、PHP、Python分别用来开发什么?一篇文章告诉你!
查看>>