一道大厂的算法面试题-每日股票价格

126 阅读2分钟

题目描述

给定某只股票连续N天的价格列表stockPrices,其中stockPricesi表示股票某天的价格,请生成一个新列表,对应位置输出为:要想等到股票价格上涨,至少需要等待的天数,如果股票价格不上涨,对应位置输出为0。

输入

第一行 表示第二行元素的个数N

第二行为用空格隔开的整数,表示每天股票的价格

其中0<N<=1000000每天股票价格为正整数

输出

输出为用空格分隔的长度为N的列表,对应位置为:要想等到股票价格上涨至少需要等待的天数

示例1

输入:
5
33 34 14 12 16
输出:
1 0 2 1 0

解释: stockPrices =[33,34,14,12,16]

  1. 当i=0时,stockPrices[0]=33,下次价格上涨stockPrices[1]=34,此处输出为1-0=1
  2. 当i=1时,stockPrices[1]=34,后续股票价格没有上涨,此处输出0
  3. 当i=2时,stockPrices[2]=14,下次价格上涨stockPrices[4]=16,此处输出为 4-2=2
  4. 当i=3时,stockPrices[3]=12下次价格上涨stockPrices[4]=16,此处输出为 4-3=1
  5. 当i=4时,stockPrices[3]=16,后续股票价格没有上涨,此处输出0所以输出为1 0 2 1 0

示例2

输入:
5
12 13 14 15 16
输出:
1 1 1 1 0

python 代码

if __name__ == '__main__':
    # n = int(input("请输入股票连续上涨的天数"))
    #
    # stockPrice = str(input("股票的价格列表"))
    n = 5
    stockPrice = "33 32 31 12 16"
    stock_price_list = stockPrice.split(" ")
    print(stock_price_list)
    list_day = []
    for index, value in enumerate(stock_price_list):
        next_index = index + 1
        if next_index == n:
            list_day.append(0)
            break
        while stock_price_list[next_index] < value:
            next_index += 1
            if next_index >= n:
                next_index = index
                break
        list_day.append(next_index - index)
    print(list_day)

欢迎大家讨论,指正