接雨水
题目描述
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水
示例
输入: [0,1,0,2,1,0,1,3,2,1,2,1]
输出: 6
思路
双指针法,如果左边的最高点的值小于右边的最高点的值,那么那个凹槽一定可以放水
代码
//work it right
class Solution {
public:
int superEggDrop(int K, int N) {
vector<vector<int>> dp(K+1,vector<int>(N+1,0));
int eggNUM=K;
int floorNUM=N;
for(int i=1;i<=floorNUM;++i)
dp[1][i]=i;
for (int i = 1; i <= eggNUM; ++i)
dp[i][1]=1;
for(int i=2;i<=eggNUM;i++)
{
for(int j=2;j<=floorNUM;j++)
{
dp[i][j]=j;
for(int x=1;x<j;++x)
dp[i][j]=min(dp[i][j],max(dp[i][x-1],dp[i-1][j-x])+1);
}
}
return dp[K][N];
}
};


浙公网安备 33010602011771号