上下文:
我在研究一个算法问题,当给定一系列股票价格时,它可以确定最大股票收益。我试图确定所述方法的时间复杂度,并遇到了一个
.min
用于
each
方法这让我提出了这篇文章中标题为的问题。
.最小值
或
.max
例如,长度为1000000的数组上的方法不会运行
.最小值
或
在阵列上,需要线性时间O(n)来确定最小值或最大值,其中n是阵列的长度?。。
如果是这样,那么根据下面显示的示例代码,通过运行
或
.最大值
中的方法
每个
方法,因为它需要在
每个
确定最小值的方法?我认为代码片段应该在O(n)时间运行,但我不了解如何运行
.最小值
和
.最大值
作品是造成巨大混乱的原因。
如果在只包含2个值的数组上调用,那么假设代码行在恒定时间O(1)下运行是可以的吗?如果能帮我澄清对所发生事情的误解,我们将不胜感激。谢谢
示例代码段:
stock_prices = [5, 7, 2 ,4, 9, 1, 8]
min_price = stock_prices[0]
max_profit = 0
stock_prices.each do |current_price|
min_price = [min_price, current_price].min
potential_profit = current_price - min_price
max_profit = [max_profit, potential_profit].max
end