- class Solution {
- public:
- vector<int> nextGreaterElements(vector<int>& nums) {
- stack<int> st;
- int n = nums.size();
- vector<int> res(n,-1);
- for(int i=0;i
2;i++){ //达成循环效果 - while(st.size()&&nums[st.top()%n]
- res[st.top()%n]=nums[i%n];
- st.pop();
- }
- st.push(i);
- }
- return res;
- }
- };
42. 接雨水
暴力法(最后一个用例超时)
- class Solution {
- public:
- int trap(vector<int>& height) {
- int n=height.size();
- int sum=0;
- for(int i=0;i
//按列计算每列的雨水量,并累加(暴力法) - if(i==0||i==n-1) continue; //不求首尾的雨水
- int rHeight = height[i]; // 记录右边柱子的最高高度
- int lHeight = height[i]; // 记录左边柱子的最高高度
- for (int r = i + 1; r < n; r++) {
- rHeight = max(rHeight,height[r]);
- }
- for (int l = i - 1; l >= 0; l--) {
- lHeight = max(lHeight,height[l]);
- }
- int h = min(lHeight,rHeight)-height[i];
- if(h>0)
- sum+=h;
- }
- return sum;
- }
- };
暴力优化法(双指针)
- class Solution {
- public:
- int trap(vector<int>& height) {
- int n = height.size();
- if(n<=2) return 0;
- vector<int> lmaxh(n,0);
- vector<int> rmaxh(n,0); //把两边的最高的柱子用数组存起来,以空间换时间
- lmaxh[0]=height[0];
- int sum=0;
- for(int i=1;i
- lmaxh[i] = max(height[i],lmaxh[i-1]);
- }
- rmaxh[n-1] = height[n-1];
- for(int i=n-2;i>=0;i--){
- rmaxh[i] = max(height[i],rmaxh[i+1]);
- }
- for(int i=0;i
- if(i==0||i==n-1) continue;
- int h = min(rmaxh[i],lmaxh[i])-height[i];
- if(h>0)
- sum+=h;
- }
- return sum;
- }
- };
单调栈法
- class Solution {
- public:
- int trap(vector<int>& height) {
- stack<int> st; //存储下标
- int n = height.size();
- int sum=0;
- for(int i=0;i
- if(st.size()&&height[i]
top()]){ - st.push(i);
- }
- if(st.size()&&height[i]==height[st.top()]){
- st.pop();
- st.push(i);
- }
- else{
- while(st.size()&&height[i]>height[st.top()]){
- int mid = st.top();
- st.pop();
- if(st.size()){
- int h = min(height[st.top()],height[i])-height[mid];
- int w = i-st.top()-1;
- sum+=h*w;
- }
- }
- st.push(i);
- }
- }
- return sum;
- }
- };
-
相关阅读:
TCP重头戏来!了!(3)—— 小林图解学习摘记
通过 saltstack 批量更新 SSL 证书
logrotate实现日志切割和清理(清晰易懂,亲测)
css正确的语法
golang中的正则表达式使用注意事项与技巧
如何隐藏或修改Docker容器中的Nginx响应头中的Server
射频测试设备编程指南——射频移相器
springboot日志配置(logback+slf4j配置)
3D建模基础教程:编辑多边形功能命令快捷方式
5V 全桥驱动芯片,大电流,具有 PWM(IN/IN)输入接口,可替代低压drv8837
-
原文地址:https://blog.csdn.net/white_0629/article/details/133689890