LeetCode---739.每日温度(Java)

大体思路:此题使用一个栈来找到每个温度之后第一个更高的温度与其之间的天数差(以索引差表示)

具体实现:

  1. 初始化:首先,我们获取了输入温度数组T的长度n,并初始化了一个同样长度的结果数组result,用于存储每个温度之后第一个更高的温度与其之间的天数差(以索引差表示)。同时,我们创建了一个Stack<Integer>来存储温度数组的索引。
  2. 遍历温度数组:我们遍历温度数组T,对于每个温度,我们检查栈是否为空以及当前温度是否大于栈顶索引对应的温度。
  3. 处理栈顶元素:如果栈不为空且当前温度大于栈顶索引对应的温度,说明我们找到了栈顶索引对应温度之后第一个更高的温度。我们弹出栈顶索引,计算当前索引与弹出索引的差(即天数差),并将这个差值存储在结果数组的对应位置上。
  4. 压入当前索引:无论是否处理了栈顶元素,我们都将当前索引压入栈中,以便后续与后续的温度进行比较。
  5. 处理剩余栈中的索引:遍历结束后,栈中可能还剩下一些索引,这些索引对应的温度在数组中没有找到更高的温度。由于我们在初始化result数组时已经将所有元素设为0,这正好表示了这些温度之后没有更高的温度,因此不需要额外处理。
  6. 返回结果:最后,我们返回填充了天数差的结果数组。

代码如下:

5ed50670cb2b4c05bb0bbe1ba0feccd7.jpg

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值