首页 > 编程语言 >算法随想Day52【单调栈】| LC503-下一个更大元素Ⅱ、LC42-接雨水

算法随想Day52【单调栈】| LC503-下一个更大元素Ⅱ、LC42-接雨水

时间:2023-04-01 23:34:20浏览次数:37  
标签:sta LC503 nums int height LC42 Day52 st size

LC503. 下一个更大元素Ⅱ

对于“每日温度”,相当于对nums数组,进行了两次遍历。用i % size所得余数作为下标,且循环的圈数为size * 2

vector<int> nextGreaterElements(vector<int>& nums)
{
    int size = nums.size();
    vector<int> result(size, -1);
    vector<int> sta;
    sta.push_back(0);
    for (int i = 1; i < size * 2; ++i)
    {   
        while (sta.empty() != true)
        {
            int temp = sta.back();
            if (nums[i % size] > nums[temp])
            {
                result[temp] = nums[i % size];
                sta.pop_back();
            }
            else
                break;
        }
        sta.push_back(i % size);
    }
    return result;
}

LC42. 接雨水

int trap(vector<int>& height)
{
    int sum = 0;
    stack<int> st;
    st.push(0);  
    for (int i = 1; i < height.size(); i++)
    {
        if (height[i] < height[st.top()])
        {
            st.push(i);
        }
        if (height[i] == height[st.top()])
        {
            st.pop();
            st.push(i);
        }
        else
        {
            while (!st.empty() && height[i] > height[st.top()])
            {
                int mid = st.top();
                st.pop();
                if (!st.empty())
                {
                    int h = min(height[st.top()], height[i]) - height[mid];
                    int w = i - st.top() - 1;
                    sum += h * w;
                }
            }
            st.push(i);
        }
    }
    return sum;
}

标签:sta,LC503,nums,int,height,LC42,Day52,st,size
From: https://www.cnblogs.com/Mingzijiang/p/17279692.html

相关文章

  • 代码随想录算法训练营Day52 动态规划
    代码随想录算法训练营代码随想录算法训练营Day52动态规划|300.最长递增子序列674.最长连续递增序列718.最长重复子数组300.最长递增子序列题目链接:300.最长递增子......
  • day52
    1、leetcode300最长递增子序列动规五部曲dp[i]:以nums[i]结尾的数组的递增子序列的最大长度做递增比较的时候,如果比较nums[j]和nums[i]的大小,那么两个递增子......
  • 【算法训练营day52】LeetCode300. 最长递增子序列 LeetCode674. 最长连续递增子序列 L
    LeetCode300.最长递增子序列题目链接:300.最长递增子序列独上高楼,望尽天涯路感觉和之前的动态规划思路还不一样,没有想出好的递推公式。慕然回首,灯火阑珊处解决这道题......
  • day52- 数据库的列类型与字段属性
    数据库的列类型数值tinyint十分小的数据一字节smallint较小的数据二字节int标准的整数四字节bigint较大的数据八字节float浮点数四字节dou......
  • 前端Vue2-Day52
    Vue组件化编程:非单文件组件:一个文件包含n个组件①定义组件:Vue.extend(options)创建,在options内部不能写el(组件都需要经过vm统一管理和分配),data必须写成函数模式,避免组......
  • 学习python-Day52
    今日学习内容作业讲解用户管理系统(单表)配置文件settings中关于template的文件路径修改和添加。将新建的应用注册接口前缀模型类在models文件中创建各个类对......
  • python学习Day52
    Day52今日内容概要CSS属性盒子模型浮动布局overflow溢出属性定位属性z-index层叠顺序opacity透明效果手搭页面练习JavaScript简介JS变量与常量JS数据类......