LeetCode-in-All

739. Daily Temperatures

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:

Solution

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