您的位置:首页 > 其它

每日一题---day7

2018-01-28 16:28 141 查看
基础题:

实现一个栈Stack,要求Push(出栈)、Pop(入栈),Min(返回最小值的操作)的时间复杂度为O(1)

代码:#include<stack>
template<class T>
class Stack
{
public:
void Push(T x)
{
if(min.empty())
{
min.push(x);
s.push(x);
}
else
{
if( x < min.top())
{
min.pop();
min.push(x);
}
s.push(x);
}
}
void Pop()
{
if(s.top() == min.top())
{
min.pop();
}
s.pop();
}
T Top()
{
      return s.top();
}
T Min()
{
if(!min.empty())
  return min.top();
}
bool Empty()
{
return s.empty();
}
private:
   stack<T> s;
   stack<T> min;
};
附加题

查找一个字符串中第一个只出现两次的字符,比如:“abcdefabcdefabc”,中第一个只出现两次的字符为‘d’,要求时间复杂度为O(N),空间复杂度O(1)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: