不算今天就剩两天题了,有点感慨啊,感觉坚持60天,似乎也没太多提升。不清楚之后能不能坚持下去,下周应该又要出差啦,不能裸辞不能裸辞不能裸辞!
739. 每日温度
单调栈思想大概了解了。
class Solution
{
public:
vector<int> dailyTemperatures(vector<int> &temperatures)
{
vector<int> result(temperatures.size(), 0);
stack<int> st;
st.push(0);
for (int i = 1; i < temperatures.size(); i++)
{
while (!st.empty() && temperatures[st.top()] < temperatures[i])
{
result[st.top()] = i - st.top();
st.pop();
}
st.push(i);
}
return result;
}
};
while (temperatures[st.top()] < temperatures[i] && (!st.empty()))
这样不行,因为可能st.top()已经是空了。
496.下一个更大元素 I
括号还是有点绕,然后就是count的用法学习一下。
class Solution {
public:
vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {
vector<int>result(nums1.size(),-1);
stack<int>st;
unordered_map<int,int>umap; // key:下标元素,value:下标
for(int i = 0;i < nums1.size();i++){
umap[nums1[i]] = i;
}
st.push(0);
for(int i = 1;i < nums2.size();i++){
while(!st.empty() && nums2[i] > nums2[st.top()]){
// if(umap[nums2[st.top()]] != 0){ 这句不行,为啥呢,因为umap[2] = 0;
if (umap.count(nums2[st.top()]) > 0) { // 看map里是否存在这个元素
result[umap[nums2[st.top()]]] = nums2[i];
}
st.pop();
}
st.push(i);
}
return result;
}
};