任务日期:7.23
题目一链接:739. 每日温度 - 力扣(LeetCode)
思路:通常是一维数组,要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置,此时我们就要想到可以用单调栈了。
思路:
1.用一个栈来记录我们遍历过的元素,需要注意的是我们当前记录的是元素的下标而不是元素本身
2.注意以下讲解中,顺序的描述为 从栈头到栈底的顺序。只有单调栈递增(从栈口到栈底顺序),就是求右边第一个比自己大的,单调栈递减的话,就是求右边第一个比自己小的。
3.过程:首先定义一个单调栈,本题是递增栈,现将tem数组的第一个数的下标0压入栈中,然后便利后面的tem数组的下标,进行相应操作。
4.公式:result[st.top()] = i - st.top()通常是一维数组,要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置,此时我们就要想到可以用单调栈了。
思路:
1.用一个栈来记录我们遍历过的元素,需要注意的是我们当前记录的是元素的下标而不是元素本身
2.注意以下讲解中,顺序的描述为 从栈头到栈底的顺序。只有单调栈递增(从栈口到栈底顺序),就是求右边第一个比自己大的,单调栈递减的话,就是求右边第一个比自己小的。
3.过程:首先定义一个单调栈,本题是递增栈,现将tem数组的第一个数的下标0压入栈中,然后便利后面的tem数组的下标,进行相应操作。
4.公式:result[st.top()] = i - st.top()
代码:
class Solution {
public:
vector<int> dailyTemperatures(vector<int>& t