Python程序:查找获利所需的最少天数
假设我们有一个价格列表,按时间顺序表示公司每日股票市场价格。我们必须找到一个相同长度的列表,其中索引i处的数值表示我们必须等待的最少天数才能获利。如果没有获利的方法,则该值为0。
因此,如果输入类似于prices = [4, 3, 5, 9, 7, 6],则输出将为[2, 1, 1, 0, 0, 0]
为了解决这个问题,我们将遵循以下步骤
- ans := 一个与prices大小相同的列表,并填充0
- q := 一个新的列表
- 对于prices中的每个索引i和价格p,执行以下操作:
- 当q不为空且p > q的最后一项的第二个值时,执行以下操作:
- j := q的最后一项的第一个元素
- ans[j] := i - j
- 从q中删除最后一项
- 在q的末尾插入(i, p)
- 当q不为空且p > q的最后一项的第二个值时,执行以下操作:
- 返回ans
让我们看看下面的实现,以便更好地理解
示例
class Solution: def solve(self, prices): ans = [0 for _ in prices] q = [] for i, p in enumerate(prices): while q and p > q[-1][1]: j = q[-1][0] ans[j] = i - j q.pop() q.append((i, p)) return ans ob = Solution() prices = [4, 3, 5, 9, 7, 6] print(ob.solve(prices))
输入
[4, 3, 5, 9, 7, 6]
输出
[2, 1, 1, 0, 0, 0]
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP