zoukankan      html  css  js  c++  java
  • LeetCode

    Best Time to Buy and Sell Stock

    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<int> &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 };
  • 相关阅读:
    tensorflow在文本处理中的使用——Doc2Vec情感分析
    tf.squeeze()
    tf.concat()
    tf.slice()
    WebService到底是什么?
    Webservice工作原理及实例
    Iterator,foreach遍历小计
    谈谈今年很火的区块链 CDN
    Java 反射简介(转载)
    Ajax二级联动简单实例
  • 原文地址:https://www.cnblogs.com/zhuli19901106/p/3512977.html
Copyright © 2011-2022 走看看