给定某只股票连续N天的价格列表stockPrices其中stockPricesi表示股票某天的价格请生成一个新列表对应位置输出为:要想等到股票价格上涨至少需要等待的天数如果股票价格不上涨对应位置输出为0。解答要求时间限制:CC++ 500ms其他语言:1000ms内存限制:CC++ 256MB其他语言:512MB输入第一行 表示第二行元素的个数N第二行 为用空格隔开的整数表示每天股票的价格其中0
思路:
- 创建一个长度为N的结果列表result,初始值都为0。
- 从第二天开始遍历股票价格列表stockPrices,将当前价格与前一天的价格进行比较。
- 如果当前价格大于前一天的价格,则说明股票价格上涨,将对应位置的结果列表result的值设为1。
- 如果当前价格小于等于前一天的价格,则说明股票价格没有上涨,将对应位置的结果列表result的值加1。
- 返回结果列表result。
时间复杂度分析: 遍历股票价格列表需要O(N)的时间,其中N为股票价格列表的长度。
空间复杂度分析: 需要一个长度为N的结果列表result,空间复杂度为O(N)。
关键代码如下所示:
def stock_prices(stockPrices): N = len(stockPrices) result = [0] * N for i in range(1, N): if stockPrices[i] > stockPrices[i-1]: result[i] = 1 else: result[i] = result[i-1] + 1 return result
测试样例
stockPrices = [33, 34, 14, 12, 16] print(stock_prices(stockPrices)
原文地址: https://www.cveoy.top/t/topic/iZYz 著作权归作者所有。请勿转载和采集!