# L7-StoneWall ###### tags: `Codility_lessons` ## Question https://app.codility.com/programmers/lessons/7-stacks_and_queues/stone_wall/ ## Key ~~這題實在有點難...~~ 用一個stack存每一個位置高度,如果下一個位置的高度比較高就存入,並新增一個石塊,如果一樣就不動作繼續迭代(算同一個石塊),如果比較小就將目前這個pop掉(目前的基底已經結束),並新增一個石塊(當作新的基底) ## Reference ## Solution ```cpp= #include <stack> int solution(vector<int> &H) { // write your code in C++14 (g++ 6.2.0) stack<int> stack; int stones = 0; for (auto height : H) { while (!stack.empty() && stack.top() > height) { stack.pop(); } if (!stack.empty() && stack.top() == height) { continue; } stones++; stack.push(height); } return stones; } ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up