列表

详情


NC208. 每日温度

描述

根据往后 n 天的天气预报,计算每一天需要等待几天才会出现一次更高的气温,如果往后都没有更高的气温,则用 0 补位。

例如往后三天的气温是 [1,2,3] , 则输出 [1,1,0]

数据范围: ,每天的温度会满足  0 \le dailyTemperatures[i] \le 1000 \

示例1

输入:

[1,2,3]

输出:

[1,1,0]

示例2

输入:

[2,4,5,9,10,0,9]

输出:

[1,1,1,1,0,1,0]

示例3

输入:

[3,1,4]

输出:

[2,1,0]

原站题解

import java.util.*;
public class Solution {
/**
*
*
*
* @param dailyTemperatures int
* @return int
*/
public int[] temperatures (int[] dailyTemperatures) {
// write code here
}
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

C++ 解法, 执行用时: 17ms, 内存消耗: 2584KB, 提交时间: 2021-12-07

class Solution {
public:
/**
*
*
*
* @param temperatures intvector
* @return intvector
*/
vector<int> temperatures(vector<int>& temperature) {
// write code here
stack<int> s;
int t_size=temperature.size();
vector<int> res(t_size);
for(int i=t_size-1;i>=0;i--){
while(!s.empty() && temperature[i]>=temperature[s.top()]){
s.pop();
}
res[i]=s.empty() ? 0: s.top()-i;
s.push(i);
}
return res;
}
};

C++ 解法, 执行用时: 17ms, 内存消耗: 2588KB, 提交时间: 2022-01-17

class Solution {
public:
/**
*
*
*
* @param temperatures intvector
* @return intvector
*/
vector<int> temperatures(vector<int>& temperatures) {
// write code here
vector<int>result(temperatures.size(),0);
stack<int>st;
st.push(0);
for(int i=1;i<temperatures.size();i++)
{
if(temperatures[i]<=temperatures[st.top()])
st.push(i);
else
{
while(!st.empty()&&temperatures[i]>temperatures[st.top()])
{
result[st.top()]=i-st.top();
st.pop();
}
st.push(i);
}
}
return result;
}
};

C++ 解法, 执行用时: 17ms, 内存消耗: 2712KB, 提交时间: 2021-12-09

class Solution {
public:
/**
*
*
*
* @param temperatures intvector
* @return intvector
*/
vector<int> temperatures(vector<int>& temperatures) {
int size=temperatures.size();
vector<int> result(size, 0);
stack<int> s;
for(int i=0;i<size;++i) {
int temp=temperatures[i];
if(s.empty()) {
s.push(i);
}
else {
while(!s.empty() && temperatures[s.top()]<temp) {
int idx=s.top();
s.pop();
result[idx]=i-idx;
}
s.push(i);
}
}
return result;
}
};

C++ 解法, 执行用时: 17ms, 内存消耗: 2724KB, 提交时间: 2022-02-12

class Solution {
public:
/**
*
*
*
* @param temperatures intvector
* @return intvector
*/
vector<int> temperatures(vector<int>& temperatures)
{
vector<int> ret(temperatures.size(), 0);
stack<int> stk;
for(int i=0; i<temperatures.size(); ++i)
{
while(!stk.empty() && temperatures[i] > temperatures[stk.top()])
{
ret[stk.top()] = i - stk.top();
stk.pop();
}
stk.push(i);
}
return ret;
}
};

C++ 解法, 执行用时: 18ms, 内存消耗: 2584KB, 提交时间: 2022-01-21

class Solution {
public:
vector<int> temperatures(vector<int> &nums) {
int t_idx;
int n = nums.size();
stack<int> stk;
vector<int> res(n, 0);
//
res[n-1] = 0; stk.push(n-1);
for(int i = n-2; i >= 0; i--) {
if(nums[i] < nums[stk.top()]) {
res[i] = stk.top() - i;
stk.push(i);
} else {
while(!stk.empty() && nums[i] >= nums[stk.top()]) {
stk.pop();
}
res[i] = (stk.empty() == false) ? (stk.top() - i) : 0;
stk.push(i);
}
}
return res;
}
};
/*
[1,2,3]
[1,1,0]
[3,1,4]
[2,1,0]
[2,4,5,9,3,10]
[1,1,1,2,1,0]
[2,4,5,9,10,0,9]
[1,1,1,1,0,1,0]
*/

上一题