Try   HackMD

739.Daily Temperatures

tags: Medium,Array,Stack

739. 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 ith 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 <= 105
  • 30 <= temperatures[i] <= 100

解答

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; }

Marsgoat Dec 18, 2022

C#

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

回到題目列表