// you can also use includes, for example:
// #include <algorithm>
#include <stack>
int solution(vector<int> &A, vector<int> &B) {
// write your code in C++98
//...keep record of downstream fishs in stack
stack<int> downFishStack;
int totalAliveCnt = 0;
for(int i = 0; i < B.size(); ++i)
{
if(B[i] == 1) downFishStack.push(i);
else
{
while(!downFishStack.empty())
{
int topDownFishIdx = downFishStack.top();
if(A[topDownFishIdx] > A[i]) break;
else downFishStack.pop();
}
if(downFishStack.empty()) totalAliveCnt++;
}
}
//...add remaining downstream fish
totalAliveCnt += downFishStack.size();
//...return result
return totalAliveCnt;
}[codility]Fish
最新推荐文章于 2018-04-24 16:03:56 发布
本文介绍了一种使用C++编程语言解决特定问题的算法:计算给定两个整数向量A和B中下游存活鱼类的数量。通过利用栈数据结构,该算法能够高效地处理并返回正确结果。

517

被折叠的 条评论
为什么被折叠?



