day07之包含min函数的栈+查找一个字符串中第一个只出现两次的字符

来源:互联网 发布:网络招商怎么精准找到 编辑:程序博客网 时间:2024/06/07 23:07
  • 实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
class Stack{    public:        void Push(int val)        {            s.push(val);            if(minstack.empty())            {                minstack.push(val);            }            else            {                int min = val > minstack.top() ? minstack.top():val;                minstack.push( min );            }        }        void  Pop()        {             assert(!s.empty());            assert(!minstack.empty() );            s.pop();            minstack.pop();        }        int Min()        {            assert(!minstack.empty());            return minstack.top();        }    private:        stack<int> minstack;        stack<int> s;};
  • 查找一个字符串中第一个只出现两次的字符
    比如:“abcdefabcdefabc”中第一个只出现两次为‘d’,要求时间复杂度为O(N),空间复杂度为O(1)
char  FirstTwoChar(const char *str){    assert(str);    char array[256] = { 0 } ;    const char *pcur = str;    while(*pcur)    {        array[ *pcur ]++;        pcur++;    }    pcur = str;    while(*pcur)    {        if(array[*pcur] == 2)            return *pcur;        pcur++;    }    return 0;}
阅读全文
0 0