返回目录
给定一个整数数组temperatures,表示每天的温度,返回一个数组answer,其中answer[i]是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高请在该位置用0来代替
1)示例1:
输入: [73,74,75,71,69,72,76,73]
输出: [1,1,4,2,1,1,0,0]
2)示例2:
输入: [30,40,50,60]
输出: [1,1,1,0]
Python源码
def solution(temps):
result = []
for i in range(len(temps)):
cur_temp = temps[i]
count = 0
flag = True
# 遍历当前日期之后的温度
for j in range(i+1, len(temps)):
if temps[j] > cur_temp:
flag = False
count += 1
break
else:
count += 1
if flag:
result.append(0) # 没有找到更高的温度
else:
result.append(count) # 温度升高所需的天数
return result
if __name__ == "__main__":
temperatures = [73, 74, 75, 71, 69, 72, 76, 73]
print(solution(temperatures))
C语言源码
#include <stdio.h>
#include <stdlib.h>
int* calculate_days_to_warmer_temperature(int* temps, int tempsSize, int* returnSize) {
int* result = (int*)malloc(sizeof(int) * tempsSize);
if (result == NULL) {
*returnSize = 0;
return NULL;
}
for (int i = 0; i < tempsSize; i++) {
int curTemp = temps[i];
int count = 0;
int flag = 1;
// 遍历当前日期之后的温度
for (int j = i+1; j < tempsSize; j++) {
if (temps[j] > curTemp) {
flag = 0;
count++;
break;
} else {
count++;
}
}
if (flag) {
result[i] = 0; // 没有找到更高的温度
} else {
result[i] = count; // 温度升高所需的天数
}
}
*returnSize = tempsSize;
return result;
}
int main() {
int temperatures[] = {73, 74, 75, 71, 69, 72, 76, 73};
int tempsSize = sizeof(temperatures) / sizeof(temperatures[0]);
int returnSize;
int* result = calculate_days_to_warmer_temperature(temperatures, tempsSize, &returnSize);
if (result != NULL) {
printf("[");
for (int i = 0; i < returnSize; i++) {
printf("%d", result[i]);
if (i < returnSize - 1)
printf(", ");
}
printf("]\n");
free(result);
} else {
printf("Memory allocation failed.\n");
}
return 0;
}
Java源码
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
Integer[] temperatures = {73,74,75,71,69,72,76,73};
System.out.println(solution(temperatures));
}
/**
* 计算每天温度升高所需的天数。
* @param temps 每天的温度数组。
* @return 包含每天温度升高所需天数的ArrayList。
*/
private static ArrayList<Integer> solution(Integer[] temps) {
ArrayList<Integer> list = new ArrayList<>();
for (int i = 0; i < temps.length; i++) {
int curTemp = temps[i];
int count = 0;
boolean flag = true;
// 遍历当前日期之后的温度
for (int j = i+1; j < temps.length; j++) {
if (temps[j] > curTemp) {
flag = false;
count++;
break;
} else {
count++;
}
}
if (flag) {
list.add(0); // 没有找到更高的温度
} else {
list.add(count); // 温度升高所需的天数
}
}
return list;
}
}
1 条评论
[...]序号题目1父母小于等于n的最简真分数2大于n的最小回文素数3多个数的最小公倍数4多个数的最大公约数5文件单词统计610进制数转2进制7连续自然数8水仙花数9每日温度[...]