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

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

2014.23.56

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.

Solution:

  To maximize the profit, you have to buy low and sell high, and profit from the margin.

  Let f[n] be the maximum profit you can get by selling on the nth day, then f[n] = price[n] - min(price[0], price[1], ..., price[n - 1]);

  There're two rules:

    1. You would always buy at the lowest price possible.

    2. You must buy before you sell something.

  Just write down what you think with code. You can also think in a reversed manner. It would produce different code, but same outcome.

  Time complexity is O(n), space complexity is O(1).

Accepted code:

1 class Solution { 2 public: 3     int maxProfit(vector
&prices) { 4 // IMPORTANT: Please reset any member data you declared, as 5 // the same Solution instance will be reused for each test case. 6 int max_value; 7 int max_profit; 8 9 if(prices.size() <= 0){10 return 0;11 }12 13 int i, n;14 15 n = prices.size();16 for(i = n - 1; i >= 0; --i){17 if(i == n - 1){18 max_value = prices[i];19 max_profit = 0;20 }else{21 if(prices[i] > max_value){22 max_value = prices[i];23 }24 if(max_value - prices[i] > max_profit){25 max_profit = max_value - prices[i];26 }27 }28 }29 30 return max_profit;31 }32 };

 

转载于:https://www.cnblogs.com/zhuli19901106/p/3512977.html

你可能感兴趣的文章