根据每日 气温 列表,请重新生成一个列表,对应位置的输入是你需要再等待多久温度才会升高的天数。如果之后都不会升高,请输入0 来代替。
例如,给定一个列表temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是[1, 1, 4, 2, 1, 1, 0, 0]。
提示:气温 列表长度的范围是[1, 30000]。每个气温的值的都是[30, 100]范围内的整数。
实现方法:

解析:
Array.fill(result,0):是把result数组中全部赋值为0;
第一轮:result=[0,0,0,0,0,0,0,0]
i=0:此时栈内还是空的,所以栈这一轮为[0];
第二轮:result=[0,0,0,0,0,0,0,0]
i=1:temperatures[0]<temperatures[1],则这一轮result = [1,0,0,0,0,0,0,0],栈为[1]
第三轮:result = [1,0,0,0,0,0,0,0]
i=2:temperatures[1]<temperatures[2],则这一轮result = [1,1,0,0,0,0,0,0],栈为[2]
第四轮:result = [1,1,0,0,0,0,0,0]
i=3:temperatures[2]>temperatures[3],则这一轮result = [1,1,0,0,0,0,0,0],栈为[2,3],不满足while条件.
第五轮:result = [1,1,0,0,0,0,0,0]
i=4:temperatures[3]>temperatures[4],则这一轮result = [1,1,0,0,0,0,0,0],栈为[2,3,4],不满足while条件.
第六轮:result = [1,1,0,0,1,0,0,0]
i=5:temperatures[4]<temperatures[5],则这一轮result=[1,1,0,0,1,0,0,0,0],栈为[2,3],
temperatures[3]<temperatures[5],则这一轮result=[1,1,0,2,1,0,0,0],栈为[2],不满足while条件了,栈为[2,5]
第七轮:result = [1,1,0,2,1,0,0,0]
i=6:temperatures[5]<temperatures[6],则这一轮result=[1,1,0,0,1,1,0,0],栈为[2]
temperatures[2]<temperatures[6],则这一轮result=[1,1,4,2,1,1,0,0],栈为空
最后栈为[6]
第八轮:result=[1,1,0,0,1,1,0,0]
i=7:temperatures[6]>temperatures[7],则这一轮result=[1,1,4,2,1,1,0,0]
网友评论