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 }