股票收益问题2024年8月29日 | 阅读 7 分钟 在本教程中,我们将编写股票跨度问题的 Python 程序。这是一个非常流行的编程问题,经常出现在技术面试中。股票跨度问题是一项金融挑战,涉及分析特定股票的 N 天日价格报价系列。目标是确定该股票在 N 天内的跨度。给定日期 i 的跨度 Si 表示当前日期之前的连续最大天数,其中股票价格低于或等于给定日期当天的价格。 示例 - 输入: N = 7, 价格 = [100 80 60 70 60 75 85] 输出 1 1 1 2 1 4 6 解释: 遍历给定输入,100 的跨度将是 1,80 小于 100,所以跨度是 1,60 小于 80,所以跨度是 1,70 大于 60,所以跨度是 2,依此类推。因此,输出将是 1 1 1 2 1 4 6。 输入: N = 6, 价格 = [10 4 5 90 120 80] 输出 1 1 2 4 5 1 解释: 遍历给定输入,10 的跨度将是 1,4 小于 10,所以跨度将是 1,5 大于 4,所以跨度将是 2,依此类推。因此,输出将是 1 1 2 4 5 1。 为了解决这个问题,我们将使用朴素方法 解决方案 -首先,我们使用朴素方法。为了解决股票跨度问题,我们可以遍历输入的价格数组。对于每个被访问的元素,我们迭代其左侧的元素,并增加当前元素的跨度值,只要左侧的元素小于或等于它。 示例 - 输出 [1, 1, 2, 4, 5, 1] 解释 - 在上面的代码中,我们定义了 getSpan() 函数,该函数计算给定价格数组的跨度值。
上述代码的时间复杂度为 O(n^2),辅助空间为 O(n)。 方法 2:使用栈在此方法中,我们首先创建一个空的整型栈并推入 0。现在,我们将第 1 天的默认值设置为 1,然后遍历其余的天数。当栈不为空且 st.top 的价格小于或等于当前天的价格时,弹出顶部值。现在,如果栈为空,则将当前天的值分配为 i+1,否则等于 i - st.top。将当前天推入栈并打印结果。让我们来理解下面的例子。 注意 - 当当前股票价格和前一天的股票价格相同时,我们不会从栈中弹出示例 - 输出 [1, 1, 2, 4, 5, 1, 0] 解释 - 在上面的代码中,我们定义了 getSpan() 函数,该函数接受两个参数:price(股票价格列表)和 S(在代码中未使用,应删除)。
此方法的时间复杂度为 O(N),辅助空间为 O(N)。 方法 3:使用动态规划在此方法中,我们将存储每个索引的值,并使用前一个值计算下一个索引的值。现在,我们将检查前一个元素的值,如果当前元素的值大于前一个元素。我们将前一个值加到当前索引中,并检查 (前一个索引 - 前一个索引的值) 并重复检查条件。让我们来理解下面的例子。 示例 - 输出 [1, 1, 2, 4, 5, 1, 0] 解释 - 在上面的代码中,我们创建了 getSpan() 函数,该函数接受两个参数:price(股票价格列表)和 S(最初为空列表,但将用于存储跨度)。
方法 4:使用两个栈在此方法中,我们将使用两个栈,一个栈存储实际的股票价格,而另一个栈是临时栈。让我们来理解下面的例子。 示例 - 输出 [1, 1, 2, 4, 5, 1] 此方法的时间复杂度为 O(N),辅助空间为 O(N)。 结论在本教程中,我们讨论了解决股票跨度问题的各种方法。 下一个主题编写 Python 代码来展平链表 |
考虑到 python 语言,我们可以说错误主要是在执行代码时产生的,而不是由于没有遵循正确的规则。其中一条规则是在程序运行时对 int 对象进行迭代。如果我们这样做,就会引发错误,...
阅读 6 分钟
Python 中的 "isna()" 函数 isna() 方法在 Python 中是一个强大的数据操作和分析工具箱,在处理 pandas 时被广泛使用。isna() 函数用于查找 pandas DataFrame 或 Series 中的缺失或空值。isna() 函数在各种场景中的使用...
阅读 3 分钟
Python的random包有一个内置函数shuffle()。它可以在Python中用来打乱一个序列(如列表或元组);打乱意味着改变集合中元素的索引。random.shuffle()的语法 我们使用shuffle()函数来改变索引...
5 分钟阅读
在查看 re 模块的 Split、Sub、Subn 函数之前,让我们先了解一些 Python 提供的 re 模块。Regex 或正则表达式 (RE) 是一个特定的文本字符串,对于定义搜索模式非常有用...
阅读 24 分钟
Python 是最流行的***别编程语言之一。Python 为人工智能(TensorFlow、PyTorch)、机器学习(Pandas、NumPy、Matplotlib)和游戏开发(Pyglet、PyGame)等不同领域提供了庞大的库。我们也可以将 Python 视为新一代编程语言,因为它展示了它的...
阅读 48 分钟
- sign()、signbit()、copysign() 大家好!我们已经知道 NumPy 包含许多用于在 Python 中执行数字运算的有用函数。今天,让我们学习一些名为 sign()、signbit()、copysign() 的函数。这些函数只能在 Python 中应用...
阅读9分钟
在本教程中,我们将学习Python中的命名空间,这是用于组织Python程序中分配给对象的符号名称的结构,为什么命名空间很重要,以及我们如何在Python程序中使用它们。让我们简要介绍一下...
7 分钟阅读
使用称为决策树的机器学习算法,我们可以表示决策以及这些决策的潜在后果,包括输出、输入成本和效用。监督学习方法组包括决策制定算法。它适用于分类和连续的输出参数。决策树...
阅读 3 分钟
我们都在学生时代学过素数,如果有人忘记了也不用担心。素数基本上是只能被1或自身整除的自然数,素数的另一个定义是...
11 分钟阅读
Pyright 是一种快速、静态的 Python 类型检查器。它由微软开发,于 2019 年作为开源项目发布。Pyright 旨在通过分析 Python 代码来检测潜在的类型不匹配和其他与类型相关的错误,从而在代码运行之前尽早捕获与类型相关的错误。
阅读 6 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India