本文主要是介绍代码随想录算法训练营第六十一天|503.下一个更大元素II、 42. 接雨水,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
代码随想录算法训练营第六十一天|503.下一个更大元素II、 42. 接雨水
- 503.下一个更大元素II
- 42. 接雨水
写了半个多小时
503.下一个更大元素II
题目链接:503.下一个更大元素II
文章链接
状态:做出来了。
代码
class Solution {
public:vector<int> nextGreaterElements(vector<int>& nums) {vector<int> nums1(nums.begin(), nums.end());nums.insert(nums.end(), nums1.begin(), nums1.end());vector<int> result(nums.size(), -1);if (nums.size() == 0) return result;stack<int> st;st.push(0);for (int i = 1; i < nums.size(); i++) { if (nums[i] < nums[st.top()]) st.push(i); else if (nums[i] == nums[st.top()]) st.push(i);else { while (!st.empty() && nums[i] > nums[st.top()]) {result[st.top()] = nums[i];st.pop();}st.push(i);}}result.resize(nums.size() / 2);return result;}
};
42. 接雨水
题目链接:42. 接雨水
文章链接
状态:做出来了
代码
class Solution {
public:int trap(vector<int>& height) {int sum = 0;for (int i = 0; i < height.size(); i++) {if (i == 0 || i == height.size() - 1) continue;int rHeight = height[i];int lHeight = height[i]; for (int r = i + 1; r < height.size(); r++) {if (height[r] > rHeight) rHeight = height[r];}for (int l = i - 1; l >= 0; l--) {if (height[l] > lHeight) lHeight = height[l];}int h = min(lHeight, rHeight) - height[i];if (h > 0) sum += h;}return sum;}
};
这篇关于代码随想录算法训练营第六十一天|503.下一个更大元素II、 42. 接雨水的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!