121. Best Time to Buy and Sell Stock

来源:互联网 发布:怎么快速提升淘宝星级 编辑:程序博客网 时间:2024/04/25 13:17

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

If you were only permitted to complete at most one transaction (ie, buy one and sell one share of the stock), design an algorithm to find the maximum profit.

Example 1:

Input: [7, 1, 5, 3, 6, 4]Output: 5max. difference = 6-1 = 5 (not 7-1 = 6, as selling price needs to be larger than buying price)

Example 2:

Input: [7, 6, 4, 3, 1]Output: 0In this case, no transaction is done, i.e. max profit = 0.


由题意得,给出一个数组,数组中的下标代表的是天数,数组中的值代表的是当天某股票的价格。然后一个人只能买一次和卖一次,然后问能获得的最大的利润是多少。

其实算法思想是挺简单的,主要是要找出最小值和最大值,并且要满足最小值要在最大值之前,所以用贪心算法就可以实现,遍历整个数组,然后每次都通过比较找出最大利润和最小值,遍历完就能得到最大的利润了,代码如下。

Code(LeetCode运行6ms):

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



原创粉丝点击