博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode 122. Best Time to Buy and Sell Stock II
阅读量:5057 次
发布时间:2019-06-12

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

题目

链接:

Level: Easy

Discription:

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 (i.e., buy one and sell one share of the stock multiple times).

Example 1:

Input: [7,1,5,3,6,4]Output: 7Explanation: Buy on day 2 (price = 1) and sell on day 3 (price = 5), profit = 5-1 = 4.             Then buy on day 4 (price = 3) and sell on day 5 (price = 6), profit = 6-3 = 3.

Note:

  • You may not engage in multiple transactions at the same time (i.e., you must sell the stock before you buy again).

代码1

class Solution {public:    int maxProfit(vector
& prices) { int buy=-1,sell=-1,profit=0; for(int i=0;i
=prices[i]) buy=prices[i]; else if(buy
=sell) sell = prices[i]; else { profit+=sell-buy; sell=-1; buy=prices[i]; } } } if(sell!=-1) profit+=sell-buy; return profit; }};

代码2

class Solution {public:    int maxProfit(vector
& prices) { int profit=0; if(prices.size()<=1) return profit; for(int i=0;i<(prices.size()-1);i++) { if(prices[i+1]>prices[i]) profit+=prices[i+1]-prices[i]; } return profit; }};

思考

  • 算法时间复杂度为O(n),空间复杂度为O(1)。
  • 代码1是记录好每次的低位买进点和高位卖出点,再计算profit。而代码二是抓住了题目的特征,只要后面一个价格比前面高我就可以算上这个差值作为利润。速度更快。这题奇怪的是股票价格还有零的。

转载于:https://www.cnblogs.com/zuotongbin/p/10228403.html

你可能感兴趣的文章
git .gitignore 文件不起作用
查看>>
Alan Turing的纪录片观后感
查看>>
c#自定义控件中的事件处理
查看>>
App.config自定义节点读取
查看>>
unity3d根据手机串号和二维码做正版验证
查看>>
二十六、Android WebView缓存
查看>>
django Models 常用的字段和参数
查看>>
linux -- 嵌入式linux下wifi无线网卡驱动
查看>>
SVN使用教程总结
查看>>
SQL中varchar和nvarchar有什么区别?
查看>>
sublime Text 几款插件
查看>>
OpenCV矩阵运算总结
查看>>
Appium+python断言的使用
查看>>
码农干货系列【3】--割绳子(cut the rope)制作点滴:旋转(rotation)
查看>>
斜率DP题目
查看>>
疯狂java学习笔记之面向对象(七) - super关键字
查看>>
磁盘阵列
查看>>
leetcode-1-2
查看>>
linux 存取 I/O 内存
查看>>
时间同步
查看>>