一些面試題

 1,設計一個棧結構,滿足一下條件:min,push,pop操作的時間複雜度爲O(1)

 

技巧型,設置一個輔助棧,push的時候,把當前最小值壓棧.

 

2,一串首尾相連的珠子(m個),有N種顏色(N<=10),設計一個算法,取出其中一段,要求包含所有N中顏色,並使長度最短。

並分析時間複雜度與空間複雜度。

 

跟編程之美上"最小摘要"問題有點像,不過這裏是首位相連的,所以設置兩端重複的原序列,空間複雜度爲O(2m);

設置兩個指針,front,tail,開始都指向第一個位置;設置所有顏色的計數器;設置最短長度minLen;

1)front向後遍歷,並增加相應計數器值,直到所有顏色計數器都大於等於1,根據front和tail距離更新minLen;

2)更新minLen之後,tail向後遍歷,並減小相應計數器值,直到某一個顏色計數器爲0(否則,也應該更新一下minLen,即--minLen);此時繼續1)過程;

如此兩指針遍歷一次即可完成.

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章