#739. Daily Temperatures
#739. Daily Temperatures
- Solved
Description
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
My Solution
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Solution {
public int[] DailyTemperatures(int[] temperatures) {
int[] result = new int[temperatures.Length];
result[temperatures.Length - 1] = 0;
for(int i = 0; i < temperatures.Length-1; i++) {
for(int j = i + 1; j < temperatures.Length; j++) {
if(temperatures[i] < temperatures[j]) {
result[i] = j - i;
break;
}
}
}
return result;
}
}
Runtime
2164 ms / Beats 5.10%
Memory
73.16 MB / Beats 80.29%
Big O Notation
Time complexity: O(n^2)
Space complexity: O(n)
Best Solution
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Solution {
public int[] DailyTemperatures(int[] temps) {
int[] result = new int[temps.Length];
Stack<int> stack = new Stack<int>();
for (int i = 0; i < temps.Length; i++) {
while (stack.Count > 0 && temps[stack.Peek()] < temps[i]) {
int index = stack.Pop();
result[index] = i - index;
}
stack.Push(i);
}
return result;
}
}
Runtime
10 ms / Beats 65.31%
Memory
76.22 MB / Beats 65.78%
Big O Notation
Time complexity: O(n)
Space complexity: O(n)
This post is licensed under CC BY 4.0 by the author.