返回目录

给定一个整数数组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;
    }
}
最后修改:2024 年 04 月 19 日
如果觉得我的文章对你有用,请随意赞赏