如何知道在Java中购买和出售股票的最佳时机?LeetCode解决方案实例

77 阅读5分钟

大家好,如果你正在准备编码面试并寻找练习题来磨练你的编码技能,那么你就来对地方了。在过去,我已经分享了100多个数据结构问题21个字符串面试问题,在今天的博客中,我们将关注如何确定购买和出售股票的最佳时机。这也是Leetcode的热门编码问题之一,所以如果你正在寻找Leetcode的买卖股票问题的解决方案,那么这个教程可以帮助你。首先,在我们解决这个问题时,你必须注意一些重要的东西,其中之一是一个数组

我们为解决这个问题所做的一切都围绕着数组和对它的操作而展开。我们将实现这个任务,然后讨论数组及其操作,但在我们继续之前,我们需要了解这个问题的性质。这将有助于你如何操纵它并围绕它做一些惊人的事情。

要知道买入和卖出股票的最佳时机,你必须注意看什么时候以较便宜的价格买入,以较高的价格卖出,这样你才可能有利润,而不是损失。

例如,格蕾丝是一个卖饼干的商人,每天已经有一个既定的价格。如果她在某一天以规定的价格买了一块饼干,那么她必须在她决定的任何一天以规定的价格卖出,在她买的那一天的第二天。

她 使用一个数组,因为她要处理的是元素的数量,而不是一个。所以 她的所有物品都被 储存在一个容器中。数组是具有相同价值的元素的集合。当我说相同价值时,这意味着你不能在那里找到不同种类的元素或数据类型。

你可以看到下面我们只有一个整数的数组,(我指的是数字)。储存的是饼干的价格。

注意。

- 她必须先卖掉之前的股票,然后才能购买另一支股票。

- 她必须在接下来的日子里卖出,而不是在她买入股票的这一天。

我们将需要一个像下面这样的饼干价格阵列。

int

如何在Java中解决买卖股票的最佳时间问题?Leetcode解决方案

通过以上的分解解释,我希望你现在能理解这个问题。对问题有了很好的理解,就会有很好的解决方案。现在,让我们来看看在Java代码中的实现。我有两种不同的方法来解决这个问题。

方法1 :

 public int getMaxProfit(int []prices){      int maxProfit = 0;     for (int i = 0; i < prices.length; i++) {        for (int j = i+1; j <prices.length; j++) {             maxProfit = Math.max(maxProfit,prices[j]-prices[i]);            }        }        return maxProfit;        }

代码解释。

在方法1中,有一个名为get max profit的方法,它接收了一个价格数组作为参数。在第2行,有一个int类型的变量 "max profit",它被初始化为0。这告诉我们,在那个水平或时间,我们还没有最大利润。

但是,在未来,当我们有了最大利润后,它将被更新到这里。第3行和第4行运行了两个不同的for循环。在第6行,Math.max被用来获取价格之间的最大利润,并将其保存在最初创建的变量max profit中。这种方法是一种简单的方法,但现在让我们检查第二种方法。

在方法2中,只运行了一个循环。所以我使用了一个增强的for循环。(你可以使用普通的循环或增强的循环,无论你喜欢哪一种都可以。 在这里,我创建了两个int类型的变量。第一个是 "min",我用Integer.max的等值初始化了这个变量。这是一个远大于0的这么大的数值。

第4行运行增强的for循环,第5行是if语句。意思是说,对于价格数组中的每个价格,如果特定的价格小于创建的min,那么min变量应该被更新为它,而不再是原来的初始值。然后在第8行调用Math.max来找到最大值,并将其保存在创建的max profit变量中。第10行返回max profit。

[Solved] How to know the best time to buy and sell stock in Java? LeetCode Solution Example

结论

在驱动类中,第2行创建了 "购买和出售股票的最佳时机 "类的实例,并进行了实例化。在第3行 创建了价格数组,并将其初始化为以下数字(2,3,15,5,7)。在第4行中调用方法(获取最大利润),给我们提供结果。通过这两种方法,你现在可以确定买入和卖出股票的最佳时机,事实上,你可以想出更多的其他方法。

你可能喜欢的其他 数据结构和算法 文章

感谢你到目前为止阅读这篇文章。如果你喜欢这个Java中的爬楼梯问题解决方案,那么请与你的朋友和同事分享。如果你有任何问题,请留言。