leetcode_739.每日温度


739

给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指在第 i 天之后,才会有更高的温度。如果气温在这之后都不会升高,请在该位置用 0 来代替。

示例 1:

输入: temperatures = [73,74,75,71,69,72,76,73]
输出: [1,1,4,2,1,1,0,0]

 1 /**
 2 temperatures = [71,72,73,71]
 3 
 4 单调栈 , 单调递减栈 ,存入数组下标
 5  */
 6 int* dailyTemperatures(int* temperatures, int temperaturesSize, int* returnSize){
 7     *returnSize = temperaturesSize;
 8     if(temperaturesSize == 0){
 9         return NULL;
10     }
11     int *res =(int *)malloc(sizeof(int) * (temperaturesSize + 1));
12     memset(res, 0, sizeof(int) * (temperaturesSize + 1));
13 
14     int *stack =(int *)malloc(sizeof(int) * (temperaturesSize + 1));
15     memset(stack, 0, sizeof(int) * (temperaturesSize + 1));
16     
17     int  top = 0;
18 
19     for(int i = 0; i < temperaturesSize; i++) {
20         while(top > 0 && temperatures[i] > temperatures[stack[top - 1]]){
21             res[stack[top - 1]] = i - stack[top -1];
22             top--;
23         }
24         stack[top] = i;
25         top++;
26     }
27     while(top > 0){
28         res[stack[top -1]] = 0;
29         top--;
30     }
31     return res;
32 }

相关