实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
class Stack
{
public:
void push(const int val)
{
st.push(val);
if (st1.empty())
{
st1.push(val);
}
else
{
if (val <= st1.top())
st1.push(val);
else
st1.push(st1.top());
}
}
void pop()
{
st1.pop();
st.pop();
}
int min()
{
return st1.top();
}
protected:
stack<int> st;
stack<int> st1;
};
查找一个字符串中第一个只出现两次的字符。
比如:“abcdefabcdefabc”中第一个只出现两次为‘d’,要求时间复杂度为O(N),空间复杂度为O(1)
char search_c(char string[], int length)
{
char ch[256] = { 0 };
for (int i = 0; i < length; ++i)
{
++ch[string[i]];
}
int i = 0;
for (i = 0; i < 256; ++i)
{
if (ch[i] == 2)
break;
}
return i;
}