Medium
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
class Solution {
/**
* @param Integer[] $temperatures
* @return Integer[]
*/
public function dailyTemperatures($temperatures) {
$sol = array_fill(0, count($temperatures), 0);
$sol[count($temperatures) - 1] = 0;
for ($i = count($sol) - 2; $i >= 0; $i--) {
$j = $i + 1;
while ($j <= count($sol)) {
if ($temperatures[$i] < $temperatures[$j]) {
$sol[$i] = $j - $i;
break;
} else {
if ($sol[$j] == 0) {
break;
}
$j = $j + $sol[$j];
}
}
}
return $sol;
}
}