首页 > 其他分享 >day41

day41

时间:2024-10-13 14:21:15浏览次数:1  
标签:int top ret height st heights day41

接雨水

class Solution {
public:
int trap(vector& height) {
int ret = 0;
stack st;
st.push(0);
for(int i = 1; i < height.size(); ++i)
{
if(height[i] <= height[st.top()])
{
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[i], height[st.top()]) - height[mid];
int w = i- st.top() - 1;
ret += h * w;
}
}
st.push(i);
}
}
return ret;
}
};

柱状图中最大的矩形

class Solution {
public:
int largestRectangleArea(vector& heights) {
int ret = 0;
heights.insert(heights.begin(), 0); // 数组头部加入元素0
heights.push_back(0); // 数组尾部加入元素0
stack st;
st.push(0);
for(int i = 1; i < heights.size(); ++i)
{
if(heights[i] >= heights[st.top()])
{
st.push(i);
}
else
{
while(!st.empty() && heights[i] < heights[st.top()])
{
int mid =st.top();
st.pop();
if(!st.empty())
{
ret = max(ret, heights[mid] * (i - st.top() - 1));
}
}
st.push(i);
}
}
return ret;
}
};

标签:int,top,ret,height,st,heights,day41
From: https://www.cnblogs.com/pwangikun/p/18462272

相关文章

  • 代码随想录训练营day41|121. 买卖股票的最佳时机,122.买卖股票的最佳时机II,123.买卖股
    121.买卖股票的最佳时机这题和贪心中的买股票很想,但这里不用考虑局部问题,因为只用买一张卖一张。我想可以用一个数组dp来记录买入价格和卖出价格。然后遍历数组草我感觉我写的想贪心。动态规划dp[i][0]表示第i天不持股的最大收益,dp[i][1]表示第i天持股的最大收益。dp......
  • 24暑假算法刷题 | Day41 | 动态规划 IX | LeetCode 188. 买卖股票的最佳时机 IV,309.
    目录188.买卖股票的最佳时机IV题目描述题解309.买卖股票的最佳时机含冷冻期题目描述题解714.买卖股票的最佳时机含手续费题目描述题解188.买卖股票的最佳时机IV点此跳转题目链接题目描述给你一个整数数组prices和一个整数k,其中prices[i]是某支给定......
  • 代码随想录day41 || 121 买卖股票最佳时机,122 买卖股票最佳时机||,123 买卖股票最佳时
    121买卖股票最佳时机funcmaxProfit(prices[]int)int{ //dp五部曲 //1dp数组以及下标含义dp[i][0]表示第i天持有股票dp[i][1]表示第i天不持有 //2递推公式,dp[i][0]=max(dp[i-1][0],0-price[i]) //dp[i][1]=max(dp[i-1][1],dp[i-1][0]+price[......
  • 《python编程从入门到实践》day41
    #昨日知识点回顾    用户注销、注册,限制访问,新主题关联到当前用户#今日知识点学习第20章设置应用程序的样式并部署20.1设置项目“学习笔记”的样式    20.1.1应用程序django-bootstrap4#settings.py---snip---INSTALLED_APPS=[#我的应......
  • day41 动态规划part3 代码随想录算法训练营 96. 不同的二叉搜索树
    题目:96.不同的二叉搜索树我的感悟:这题,考的概率不大,听一遍,过一遍就行。理解难点:二叉搜索树定义为什么是累加的听课笔记:代码示例:classSolution:defnumTrees(self,n:int)->int:dp=[0]*(n+1)#创建一个长度为n+1的数组,初始化为0d......
  • 代码随想录 day41 整数拆分 不同的二叉搜索树
    整数拆分这里的递推式子很不好想一般的想法是dp[i]=max(dp[i],dp[i-j])但是这个式子需要赋值dp[1]=1dp[2]=2dp[3]=3这个不符合dp[i]定义这里递推式子如下dp[i-j]等于拆分成两个或两个以上的数字i*(i-j)就是两个数字拆分不同的二叉搜索树难点依旧是递推式是怎么......
  • 算法学习Day41整数拆分、不同的二叉搜索树
    Day41整数拆分、不同的二叉搜索树ByHQWQF2024/01/22笔记343.整数拆分给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。返回你可以获得的最大乘积。示例1:输入:2输出:1解释:2=1+1,1×1=1。示例 2:输入:10输出:36解释......
  • Day41 二维数组
    二维数组多维数组多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组。二维数组ina[][]=newint[2][5];以上二维数组a可以看成一个两行五列的数组。二维数组模型图示代码演练packagecom.baixiaofan.array;publiccla......
  • 【安全学习之路】Day41
    ......
  • 算法学习day41动态规划part03-343、96
    packageLeetCode.DPpart03;/***343.整数拆分*给定一个正整数n,将其拆分为k个正整数的和(k>=2),并使这些整数的乘积最大化。*返回你可以获得的最大乘积。*示例:*输入:n=2*输出:1*解释:2=1+1,1×1=1。**/publicclassIntegerBre......