- 921. Minimum Add to Make Parentheses Valid 使括号有效的最少添加
- 915. Partition Array into Disjoint Intervals 分割数组
- 932. Beautiful Array 漂亮数组
- 940. Distinct Subsequences II 不同的子序列 II
题目地址:https://leetcode.com/problems/daily-temperatures/description/
Given a list of daily temperatures, produce a list that, for each day in the input, tells you how many days you would have to wait until a warmer temperature. If there is no future day for which this is possible, put 0 instead.
For example, given the list temperatures = [73, 74, 75, 71, 69, 72, 76, 73], your output should be [1, 1, 4, 2, 1, 1, 0, 0].
Note: The length of temperatures will be in the range [1, 30000]. Each temperature will be an integer in the range [30, 100].
这个题难在找到下一个比当前气温高的位置和当前位置的差。注意到题目中温度变化范围只有60,而天数的变化范围有30000,所以对温度遍历是可以接受的,对天数遍历不可接受。
所以我们倒序遍历温度,保留每个温度的最新的天数位置,保存在字典中。对当前的温度,我们从字典中找所有比他大的温度的位置,保留最小值。如果没有比他大的,就写入0.
class Solution(object):
def dailyTemperatures(self, temperatures):
"""
:type temperatures: List[int]
:rtype: List[int]
"""
save = {}
answer = []
for day in range(len(temperatures) - 1, -1, -1):
temp = temperatures[day]
save[temp] = day
larger = []
for i in range(temp + 1, 102):
if i in save:
larger.append(save[i] - day)
if larger:
answer.append(min(larger))
else:
answer.append(0)
return answer[::-1]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
如果正序遍历的话需要一个栈,栈的操作是这样的:
如果栈是空或者栈顶的元素小于当前元素,那么说明前面的这天的温度小于今天的,所以直接弹出前面这天,并且把他这天的结果设置为和今天的位置差。
需要注意的是,无论当天的温度是高是低,它的结果的确定需要根据后面确定,所以要入栈。
class Solution(object):
def dailyTemperatures(self, T):
"""
:type T: List[int]
:rtype: List[int]
"""
N = len(T)
stack = []
res = [0] * N
for i, t in enumerate(T):
while stack and stack[-1][0] < t:
oi = stack.pop()[1]
res[oi] = i - oi
stack.append((t, i))
return res
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
C++版本的代码如下:
class Solution {
public:
vector<int> dailyTemperatures(vector<int>& T) {
const int N = T.size();
stack<pair<int, int>> s;
vector<int> res(N);
for (int i = 0; i < N; i++) {
while (!s.empty() && s.top().first < T[i]) {
int io = s.top().second; s.pop();
res[io] = i - io;
}
s.push({T[i], i});
}
return res;
}
};
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
DDKK.COM 弟弟快看-教程,程序员编程资料站,版权归原作者所有
本文经作者:负雪明烛 授权发布,任何组织或个人未经作者授权不得转发
我正在为一个 CS 类(class)做作业,他们希望我为此制作一个原型(prototype): void myFunction(double pressure, int &temperature, d
题目地址:https://leetcode.com/problems/daily-temperatures/description/ 题目描述 Given a list of daily temp
在 Rx.Net 的所有文献中,都提到了通常称为 的内容。温度 一个可观察的。 有冷观测 (就像由 Observable.Interval() 和类似工厂方法创建的那些),每次创建新订阅时都会产生副作
大家好, 所以我创建了一个Temperature类,它有一个构造函数来制作温度。温度是一个由 2 个数字组成的数组列表 [冷度、热度]。 public int hotness; public
我想创建一个类似于这个的 map : 此示例显示了全局温度水平。但我需要使用我自己的非温度数据来表示污染水平。 我试过“热图”层,但它对我不起作用,因为它主要用于表示人口水平: 如何使用 Bing 或
前言 上一篇文章介绍了几个开源LLM的环境搭建和本地部署,在使用ChatGPT接口或者自己本地部署的LLM大模型的时候,经常会遇到这几个参数,本文简单介绍一下~ temperatu
这个问题在这里已经有了答案: Javascript object literal: what exactly is {a, b, c}? (3 个答案) 关闭 4 年前。 此演示代码来自react
我正在尝试构建一个温度转换器来帮助自己学习 C#。我只知道大部分基础知识,这是我到目前为止所想出的。我坚持的是获取用户输入的数字,并将其转换为用户之前输入的选择,即华氏度或摄氏度。同样,我只知道基础知
有人可以帮忙解决这个问题吗?我可以让它运行,但在输出消息“外部温度是多少:”“此处的数字”之后 键入 (C) 表示摄氏度或 (F) 表示华氏度: 一旦我输入 C 或 F,它就会显示此错误消息 线程“m
iOS 10 增加了用户在“设置”>“常规”>“语言和区域”>“温度单位”下设置“温度单位”选项的功能。 我的应用如何以编程方式确定此设置,以便它可以显示正确的温度单位?我翻遍了 NSLocale.h
嗨,我有一个来自 simpleweatherjs 的工作天气脚本。我觉得很奇怪,因为从样本来看,我发现一切都可以在 diff 浏览器上运行,但是当我通过结合自动更新和地理定位来定制插件时,并在堆栈中我
iOS 10 增加了用户在“设置”>“通用”>“语言与地区”>“温度单位”下设置“温度单位”选项的功能。 我的应用如何以编程方式确定此设置,以便显示正确的温度单位?我浏览了 NSLocale.h,没有
我对 LabView/DAQ 完全陌生(通常是技术工程师和程序员)。 去年,我的公司购买了 National Instruments 硬件,急于启动和运行项目。 数据采集硬件: 1x NI cDAQ-
我需要一些帮助。我的任务是开发一个应用程序,使用可实例化的类和数组来存储 3 周(一周 7 天)的温度值,并计算和显示每周的平均值。我想我已经很接近了,但是我的代码返回 null 作为平均值,不知道出
我试图获取 android 设备的 CPU 温度,经过一番搜索我发现一些文件存储了温度数据,我唯一需要做的就是读取这些文件。最具体地说,我发现大多数设备都在路径“/sys/class/thermal/
Nest change target_temperature_f : 如何使用 java http PUT 通过 android 代码设置 Nest Thermostat 的目标温度? 最佳答案 您可
我是一名优秀的程序员,十分优秀!