大家好,如果你正在准备编码面试并寻找练习题来磨练你的编码技能,那么你就来对地方了。在过去,我已经分享了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。
结论
在驱动类中,第2行创建了 "购买和出售股票的最佳时机 "类的实例,并进行了实例化。在第3行 创建了价格数组,并将其初始化为以下数字(2,3,15,5,7)。在第4行中调用方法(获取最大利润),给我们提供结果。通过这两种方法,你现在可以确定买入和卖出股票的最佳时机,事实上,你可以想出更多的其他方法。
你可能喜欢的其他 数据结构和算法 文章
-
5本深入学习数据结构和算法的书(书籍)
-
如何在Java中反转一个数组?(解决方案)
-
6个针对程序员的动态编程课程(最佳课程)
-
75+程序员的编码面试问题(问题)
-
如何在Java中删除数组中的重复元素?(解决方案)
-
如何在Java中实现一个递归预排序算法?(解决方法)
-
10个(免费)程序员的数据结构课程(免费课程)
-
递归后序遍历算法(解决方案)
-
如何在没有递归的情况下打印二叉树的叶子结点?(解决方案)
-
10个破解编码面试的最佳在线课程(课程)
-
递归顺序遍历算法(解决方案)
-
如何解决Java中的爬行数组问题?(解决方案)
-
二叉树中的迭代预排序遍历 (解决方案)
-
如何在Java中计算给定二叉树中叶子节点的数量?(解决方案)
-
为程序员提供的10个免费数据结构和算法课程(课程)
-
100+面试中的数据结构编码问题(问题)
感谢你到目前为止阅读这篇文章。如果你喜欢这个Java中的爬楼梯问题解决方案,那么请与你的朋友和同事分享。如果你有任何问题,请留言。