leetcode739题,每日温度。
比上一篇简单,思路清晰很多。
739答案
int* dailyTemperatures(int* T, int TSize, int* returnSize){
int *result = (int *)malloc(sizeof(int) * TSize);
int *stack = (int *)malloc(sizeof(int) * TSize);
int i, topvalue, times, top = 0;
for(i = 0; i < TSize; i++) {
while (top != 0 && T[i] > T[stack[top - 1]]) {
topvalue = stack[--top];
result[topvalue] = i - topvalue;
}
stack[top++] = i;
}
while(top != 0) {
topvalue = stack[--top];
result[topvalue] = 0;
}
free(stack);
*returnSize = TSize;
return result;
}