首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LeetCode:买入和卖出股票的最佳时机

LeetCode:买入和卖出股票的最佳时机
EN

Code Review用户
提问于 2019-06-13 07:56:36
回答 1查看 552关注 0票数 3

https://leetcode.com/problems/best-time-to-buy-and-sell-stock-ii/

请检查性能。

假设您有一个数组,其中第一个元素是第一天给定股票的价格。设计一个算法来寻找最大利润。你可以随心所欲地完成多少笔交易(也就是说,买一股,多次卖出一股)。注:您不能同时从事多个交易(即,您必须在再次购买之前出售该股票)。例1:输入:7,1,5,3,6,4输出:7解释:在第2天买进(价格= 1),在第3天卖出(价格= 5),利润= 5-1 = 4。然后在第4天买进(价格= 3),第5天卖出(价格= 6),利润= 6-3 =3。示例2:输入:1,2,3,4,5输出:4解释:第1天买进(价格= 1),第5天卖出(价格= 5),利润= 5-1 = 4。注意,你不能在第一天买,在第二天买,以后再卖,因为你同时从事多种交易。你必须先卖掉,然后再买。示例3:输入:7,6,4,3,1输出: 0解释:在本例中,没有完成任何事务,即最大利润=0。

代码语言:javascript
复制
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace ArrayQuestions
{
    /// <summary>
    /// https://leetcode.com/explore/featured/card/top-interview-questions-easy/92/array/564/
    /// </summary>
    [TestClass]
    public class BestTimetoBuyandSellStockII
    {
        [TestMethod]
        public void AnswerIs7()
        {
            int[] prices = {7, 1, 5, 3, 6, 4};
            Assert.AreEqual(7, MaxProfit(prices));
        }

        public int MaxProfit(int[] prices)
        {
            int max = 0;
            for (int i = 0; i < prices.Length-1; i++)
            {
                if (prices[i] < prices[i + 1])
                {
                    max += prices[i + 1] - prices[i];
                }
            }
            return max;

        }
    }
}
EN

回答 1

Code Review用户

回答已采纳

发布于 2019-06-21 18:24:17

性能

您的解决方案是具有时间复杂性O(n)的一次遍历。这是拟议解决方案的一个小变体。

公约

  • 当不使用实例状态/操作时使用static
  • 使用清晰的、非缩写的方法名CalculateMaximumProfit
  • 始终防止public方法中的错误用户输入
  • 在读取代码时类型明显时,更喜欢使用var
  • 更喜欢操作数和操作符prices.Length - 1之间的空格
  • 清除腰部空格(在本例中,在return语句之后)

应用于您的代码:

代码语言:javascript
复制
 public static int CalculateMaximumProfit(int[] prices)
 {
     prices = prices ?? throw new ArgumentNullException(nameof(prices));
     var max = 0;
     for (var i = 0; i < prices.Length - 1; i++)
     {
         if (prices[i] < prices[i + 1])
         {
             max += prices[i + 1] - prices[i];
         }
     }
     return max;
 }
票数 2
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/222194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档