题目考察的知识点:栈是一种特殊的线性表,是限定仅在一端(通常是表尾),进行插入和删除操作的线性表。又称为后进先出(Last In First Out)的线性表,简称LIFO结构。
题目解答方法的文字分析:将牛群的喂养先后按照一定顺序入栈,相同则出栈,最后只需要判断末尾和起始位置的喂养顺序是否相同。
本题解析所用的编程语言:c++
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param numCows int整型
* @param feedOrders int整型vector<vector<>>
* @return bool布尔型
*/
bool canFeedAllCows(int numCows, vector<vector<int> >& feedOrders)
{
// write code here
stack<int> st;
for (int i = 0; i < feedOrders.size(); ++i)
{
for (int j = 1; j >= 0; --j)
{
if (!st.empty() && st.top() == feedOrders[i][j])
st.pop();
else
st.push(feedOrders[i][j]);
}
}
queue<int> qu;
while (st.size())
{
qu.push(st.top());
st.pop();
}
int sz = qu.size();
if (qu.size() && qu.front() == qu.back())
sz -= 2;
if (sz > 2 || qu.empty())
return false;
return true;
}
};

京公网安备 11010502036488号