Re: [閒聊] 每日leetcode已回收
這題我是用stack做
一樣是找兩邊最高的 讓他們裝水
然後要兩個stack
不然會有沒裝到水的地方
捏
class Solution {
public:
int trap(vector<int>& height)
{
int water = 0;
int len = height.size();
vector<int> paper;
vector<int> paper2;
for(int i = 0 ; i < len ; i ++)
{
paper.push_back(i);
int tall = 0;
int talli = 0;
if(paper.size() > 1 && height[paper[0]] <= height[paper[paper.size()
-1]])
{
tall = min(height[paper[0]] , height[paper[paper.size()-1]] );
talli = i;
for(int j = paper[0]+1 ; j < paper[paper.size()-1] ; j ++)
{
water += tall - height[j];
//cout << tall << " - " << height[j] << " (" << j << endl;
}
paper.clear();
paper.push_back(i);
}
}
for(int i = paper.size()-1 ; i >= 0 ; i --)
{
paper2.push_back(paper[i]);
int tall = 0;
int talli = 0;
if(paper2.size() > 1 && height[paper2[0]] <= height[paper2[paper2.si
ze()-1]])
{
//cout << "???" ;
tall = min(height[paper2[0]] , height[paper2[paper2.size()-1]] )
;
talli = paper2[paper2.size()-1];
for(int j = paper2[0] ; j > paper2[paper2.size()-1] ; j --)
{
water += tall - height[j];
//cout << tall << " - " << height[j] << " (" << j << endl;
}
paper2.clear();
paper2.push_back(talli);
}
}
return water;
}
};
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.162.47.173 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1712891409.A.F87.html
→
04/12 11:11,
1年前
, 1F
04/12 11:11, 1F
推
04/12 11:11,
1年前
, 2F
04/12 11:11, 2F
→
04/12 11:12,
1年前
, 3F
04/12 11:12, 3F
→
04/12 11:13,
1年前
, 4F
04/12 11:13, 4F
推
04/12 11:13,
1年前
, 5F
04/12 11:13, 5F
→
04/12 11:13,
1年前
, 6F
04/12 11:13, 6F
→
04/12 11:13,
1年前
, 7F
04/12 11:13, 7F
→
04/12 11:13,
1年前
, 8F
04/12 11:13, 8F
推
04/12 11:15,
1年前
, 9F
04/12 11:15, 9F
推
04/12 11:15,
1年前
, 10F
04/12 11:15, 10F
推
04/12 12:09,
1年前
, 11F
04/12 12:09, 11F
討論串 (同標題文章)
完整討論串 (本文為第 113 之 1548 篇):