方法一:暴力解法
两个for循环,挨个比较
时间复杂度:O(n*n)
空间复杂度:O(n)
class Solution
{
public:
vector<int> dailyTemperatures(vector<int>& temperatures)
{
vector<int> v;
for (int i = 0, j = 0; i < temperatures.size() - 1; i++)
{
for (j = i + 1; j < temperatures.size(); j++)
{
if (temperatures[j] > temperatures[i])
{
v.push_back(j - i);
break;
}
}
if (j == temperatures.size())
{
v.push_back(0);
}
}
v.push_back(0);
return v;
}
};
方法二:栈
时间复杂度:O(n)
空间复杂度:O(n)
class Solution
{
public:
vector<int> dailyTemperatures(vector<int>& temperatures)
{
stack<int> s;
vector<int> v(temperatures.size()); //将v初始化为全部为0
s.push(0);
for (int i = 1; i < temperatures.size(); i++)
{
if (temperatures[i] >= temperatures[s.top()])
{
while (s.empty() == false)
{
if (temperatures[i] <= temperatures[s.top()])
{
break;
}
v[s.top()] = i - s.top();
s.pop();
}
}
s.push(i);
}
return v;
}
};