给定一个整数数组 tempratures ,表示第 i 天的温度,请你找出下一个大于第 i 天温度的天数距离第 i 天的差值,输出相差的天数;若无大于第 i 天温度的日子,输出0.C语言代码
时间: 2024-03-21 16:43:04 浏览: 24
以下是用 C 语言实现上述算法的代码:
```c
#include <stdio.h>
#include <stdlib.h>
int* dailyTemperatures(int* temperatures, int temperaturesSize, int* returnSize) {
int* ans = (int*)malloc(sizeof(int) * temperaturesSize);
*returnSize = temperaturesSize;
int* stack = (int*)malloc(sizeof(int) * temperaturesSize);
int top = -1;
for (int i = 0; i < temperaturesSize; i++) {
while (top != -1 && temperatures[i] > temperatures[stack[top]]) {
int j = stack[top--];
ans[j] = i - j;
}
stack[++top] = i;
}
while (top != -1) {
ans[stack[top--]] = 0;
}
free(stack);
return ans;
}
int main() {
int temperatures[] = {73, 74, 75, 71, 69, 72, 76, 73};
int n = sizeof(temperatures) / sizeof(int);
int* ans, ansSize;
ans = dailyTemperatures(temperatures, n, &ansSize);
for (int i = 0; i < ansSize; i++) {
printf("%d ", ans[i]);
}
free(ans);
return 0;
}
```
时间复杂度为 O(n),空间复杂度为 O(n)。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)