代码随想录算法打卡, 新手自我记录一下刷题历程, 仅为自我打卡使用.
503. 下一个更大元素 II
class Solution {
public:
vector<int> nextGreaterElements(vector<int>& nums) {
vector<int> nums2(nums.size() * 2);
vector<int> result(nums2.size(), -1);
for (int i = 0; i < nums2.size(); ++i)
nums2[i] = nums[i % nums.size()];
stack<int> st;
for (int i = 0; i < nums2.size(); ++i) {
while (!st.empty() && nums2[i] > nums2[st.top()]) {
result[st.top()] = nums2[i];
st.pop();
}
st.push(i);
}
return vector<int>{result.begin(), result.begin() + nums.size()};
}
};
42. 接雨水
class Solution {
public:
int trap(vector<int>& height) {
stack<int> st;
int result = 0;
for (int i = 0; i < height.size(); ++i) {
while (!st.empty() && height[i] > height[st.top()]) {
int mid = st.top();
st.pop();
if (!st.empty()) {
int w = i - st.top() - 1;
int h = min(height[st.top()], height[i]) - height[mid];
result += h * w;
}
}
st.push(i);
}
return result;
}
};
希望能再坚持一天!