面试题–数组和字符串

  1. 消除字符串中的重复字符
    题目:不使用额外缓冲。注意:一两个变量使用OK的,但是复制整个数组就不行。
    分析:如果不使用额外缓冲,则对每个字符串判断是否为重复字符,如果是重复字符跳过,非重复字符记录。O(n^2).
    三个指针,tail指向未含重复字符的字符串的下一位,i做全遍历,j只遍历0-tail指向的已有统计字符。 Continue reading

面试题—栈和队列

  1. 包含min函数的栈
    题目:定义栈的数据结构,在其中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min、push和pop的时间复杂度都是O(1)。
    分析:使用一个辅助栈来存入当前栈的最小值,适当改进后不用重复插入辅助栈相同的数据。插入的值小于等于min,s2就push,弹出的值就是min,s2就pop。 Continue reading