在Python中查找获利所需等待的最少天数的程序

在Python中查找获利所需等待的最少天数的程序

假设我们有一个以时间顺序表示公司每日股票市场价格的价格列表。我们需要找到一个与原列表等长的列表,其中索引i处的值表示为实现盈利所需等待的最少天数。如果没有这样的方法来获利,则该值应为0。

因此,如果输入是prices = [4, 3, 5, 9, 7, 6],那么输出将是[2, 1, 1, 0, 0, 0]

要解决这个问题,我们将按照以下步骤进行:

  • ans :=一个与price大小相同且用0填充的列表
  • q :=一个新列表
  • 对prices的每个索引i和价格p,执行以下操作:
    • while q不为空并且p > q的最后项的第二个值时,执行以下操作:
      • j := q的最后一项的第一个元素
      • ans[j] := i-j
      • 删除q的最后一项
    • 在q的末尾插入(i,p)
  • 返回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]

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程