739.Daily Temperatures === ###### tags: `Medium`,`Array`,`Stack` [739. Daily Temperatures](https://leetcode.com/problems/daily-temperatures/) ### 題目描述 Given an array of integers `temperatures` represents the daily temperatures, return an array `answer` such that `answer[i]` is the number of days you have to wait after the i^th^ day to get a warmer temperature. If there is no future day for which this is possible, keep `answer[i] == 0` instead. ### 範例 **Example 1:** ``` Input: temperatures = [73,74,75,71,69,72,76,73] Output: [1,1,4,2,1,1,0,0] ``` **Example 2:** ``` Input: temperatures = [30,40,50,60] Output: [1,1,1,0] ``` **Example 3:** ``` Input: temperatures = [30,60,90] Output: [1,1,0] ``` **Constraints**: * 1 <= `temperatures.length` <= 10^5^ * 30 <= `temperatures[i]` <= 100 ### 解答 #### Javascript ```javascript= function dailyTemperatures(temperatures) { const result = []; for (let i = 0; i < temperatures.length; i++) { result[i] = 0; } const stack = []; for (let i = 0; i < temperatures.length; i++) { while (stack.length && temperatures[i] > temperatures[stack[stack.length - 1]]) { const current = stack.pop(); result[current] = i - current; } stack.push(i); // 只存index就可以了 } return result; } ``` >[name=Marsgoat][time= Dec 18, 2022] #### C# ```csharp= public class Solution { public int[] DailyTemperatures(int[] temperatures) { int[] output = new int[temperatures.Length]; for (int i = temperatures.Length - 1; i >= 0; i--) { int j = i + 1; while (j < temperatures.Length) { if (temperatures[j] > temperatures[i]) { output[i] = j - i; break; } j += Math.Max(1, output[j]); } } return output; } } ``` ### Reference [回到題目列表](https://hackmd.io/@Marsgoat/leetcode_every_day)