[Leetcode] Best Time to Buy and Sell Stock

来源:互联网 发布:微商加好友软件 编辑:程序博客网 时间:2024/05/18 01:32

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.
题意指用整型数组指定每天股票价格,要求只做一次买入卖出交易来获得最大的收益,收益可以为零,但是不可以是负值,卖出价格必须大于买入价格。

因此,可以理解成求数组中后续元素的顺序最大差值,使用循环的方式记录最大差值和最小值:

int maxProfit(int* prices, int pricesSize) {    if (NULL == prices || pricesSize <= 0)    return  0;        int minPrice = prices[0];    int max_profit = 0, i = 0;for(i = 1; i < pricesSize; i ++){int tmpProfit = prices[i] - minPrice;if (prices[i] < minPrice){minPrice = prices[i];}if ((max_profit < tmpProfit)){max_profit = tmpProfit;}}    return max_profit;}


0 0
原创粉丝点击