zoukankan      html  css  js  c++  java
  • [LeetCode] 122. Best Time to Buy and Sell Stock II 买卖股票的最佳时间 II

    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).

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

    Example 1:

    Input: [7,1,5,3,6,4]
    Output: 7
    Explanation: 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.
    

    Example 2:

    Input: [1,2,3,4,5]
    Output: 4
    Explanation: Buy on day 1 (price = 1) and sell on day 5 (price = 5), profit = 5-1 = 4.
                 Note that you cannot buy on day 1, buy on day 2 and sell them later, as you are
                 engaging multiple transactions at the same time. You must sell before buying again.
    

    Example 3:

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

    给定一个元素代表某股票每天价格的数组,可以买卖股票多次,但不能同时有多个交易,买之前要卖出,求最大利润。

    如果当前价格比之前价格高,则可前一天买入,今天卖出,把差值累计到利润中,若明日价更高的话,还可以今日买入,明日再抛出。以此类推,遍历完整个数组后即可求得最大利润。

    Java:

    public class Solution {
        public int maxProfit(int[] prices) {
            int res = 0;
            for (int i = 0; i < prices.length - 1; ++i) {
                if (prices[i] < prices[i + 1]) {
                    res += prices[i + 1] - prices[i];
                }
            }
            return res;
        }
    }
    

    Python:

    class Solution(object):
        def maxProfit(self, prices):
            return sum(max(prices[i + 1] - prices[i], 0) for i in range(len(prices) - 1)) 

    Python:

    class Solution:
        def maxProfit(self, prices):
            profit = 0
            for i in xrange(len(prices) - 1):
                profit += max(0, prices[i + 1] - prices[i])     
            return profit
    

    Python:

    class Solution(object):
        def maxProfit(self, prices):
            """
            :type prices: List[int]
            :rtype: int
            """
            profit_sum = 0
            for i in xrange(1, len(prices)):
                if prices[i] > prices[i-1]:
                    profit_sum += prices[i] - prices[i-1]
                    
            return profit_sum  

    C++:

    public class Solution {
        public int maxProfit(int[] prices) {
            int res = 0;
            for (int i = 0; i < prices.length - 1; ++i) {
                if (prices[i] < prices[i + 1]) {
                    res += prices[i + 1] - prices[i];
                }
            }
            return res;
        }
    }
    

    类似题目:

    [LeetCode] 121. Best Time to Buy and Sell Stock 买卖股票的最佳时间

    [LeetCode] 123. Best Time to Buy and Sell Stock III 买卖股票的最佳时间 III

    [LeetCode] 188. Best Time to Buy and Sell Stock IV 买卖股票的最佳时间 IV

    [LeetCode] 309. Best Time to Buy and Sell Stock with Cooldown 买卖股票的最佳时间有冷却期

    All LeetCode Questions List 题目汇总

      

      

  • 相关阅读:
    实验二
    实验一
    网络对抗技术 实验四 恶意代码技术
    网络对抗技术 实验三 密码破解技术
    网络对抗技术 实验二 网络嗅探与欺骗
    网络对抗技术 实验一 网络侦查与网络扫描
    实验6
    实验5
    caogao
    实验四
  • 原文地址:https://www.cnblogs.com/lightwindy/p/8531925.html
Copyright © 2011-2022 走看看