題目一:
設計可以變更的快取結構。
【題目】
設計一種快取結構,該結構在構造時確定大小,假設大小為k,並有兩個功能:
(1)set(key, value):將記錄(key, value)插入該結構。
(2)get(key):返回key對應的value值。
【要求】
(1)set和get方法的時間複雜度為o(1)。
(2)某個key的set和get操作一旦發生,認為這個key的記錄成了最經常使用的。
(3)當快取的大小超過k時,移出最不經常使用的記錄,即set或get最久遠的。
【舉例】
假設快取結構的例項是cache,大小為3,並依次發生如下行為:
1.cache.set("a", 1)。最經常使用的記錄為("a", 1)。
2.cache.set("b", 2)。最經常使用的記錄為("b", 2),("a", 1)變為最不經常的。
3.cache.set("c", 3)。最經常使用的記錄為("c", 3),("a", 1)還是最不經常的。
4.cache.get("a")。最經常使用的記錄為("a", 1),("b", 2)變為最不經常的。
5.cache.set("d", 4)。大小超過了3,所以移除此時最不經常使用的記錄("b", 2),加入記錄("d", 4),並且為最經常使用的記錄,然後("c", 3)變為最不經常使用的記錄。
**:(暫無,map+佇列)
題目二:
給定乙個n行3列二維陣列,每一行表示有一座大樓,一共有n座大樓。所有大樓的底部都坐落在x軸上,每一行的三個值(a,b,c)代表每座大樓的從(a,0)點開始,到(b,0)點結束,高度為c。
輸入的資料可以保證a**:(暫無)
題目三:
找到被指的新型別字元
【題目】
新型別字元的定義如下:
1.新型別字元是長度為1或者2的字串。
2.表現形式可以僅是小寫字母,例如,"e";也可以是大寫字母+小寫字母,例如,"ab";還可以是大寫字母+大寫字母,例如,"dc"。現在給定乙個字串str,str一定是若干新型別字元正確組合的結果。比如"eaccbi",由新型別字元"e"、"a"、"cc"和"bi"拼成。再給定乙個整數k,代表str中的位置。請返回被k位置指中的新型別字元。
【舉例】
str="aaabcdecbcg"。
1.k=7時,返回"ec"。
2.k=4時,返回"cd"。
3.k=10時,返回"g"。
**:題目四:
字典樹(字首樹)的實現
【題目】
字典樹又稱為字首樹或trie樹,是處理字串常見的資料結構。假設組成所有單詞的字元僅是「a」~「z」,請實現字典樹結構,幷包含以下四個主要功能。
void insert(string word):新增word,可重複新增。
void delete(string word):刪除word,如果word新增過多次,僅刪除乙個。
boolean search(string word):查詢word是否在字典樹中。
int prefixnumber(string pre):返回以字串pre為字首的單詞數量。
**:題目五:
給定乙個整數陣列arr,請返回子陣列的最大異或值
要求:時間複雜度o(n)
**:題目六&七:
數字的英文表達和中文表達
【題目】
給定乙個32位整數num,寫兩個函式分別返回num的英文與中文表達字串。
【舉例】
num=319
英文表達字串為:three hundred nineteen
中文表達字串為:三百一十九
num=1014
英文表達字串為:one thousand, fourteen
中文表達字串為:一千零十四
num=-2147483648
英文表達字串為:negative, two billion, one hundred forty seven million, four
hundred eighty three thousand, six hundred forty eight
中文表達字串為:負二十一億四千七百四十八萬三千六百四十八
num=0
英文表達字串為:zero
中文表達字串為:零
**:題目八:
乙個陣列如何能夠拆出異或值為0的最多的子陣列。
**:
《演算法競賽高階指南》0x32約數
求解 1,n 之間的最大的反素數,有性質 這個反素數是質因數個數最多的數中最小的乙個。證明 假設有乙個數質因數個數比它多,如果在他前面,不滿足反素數的定義,如果在他後面,一定可以找到第乙個質因數比它大的數,這個數作為結果更好,反證可知,這個數質因數一定是最多的 反證 假設有質因數與他的個數一樣但是比...
演算法 高階演算法
三數之和 3sum 第十一章 33 給出乙個有 n 個整數的陣列 s,在 s 中找到三個整數 a,b,c,找到所有使得 a b c 0 的三元組。注意事項 在三元組 a,b,c 要求 a b c,結果不能包含重複的三元組。樣例 如 s 你需要返回的三元組集合的是 1,0,1 1,1,2 an hig...
高階32 三艘船
32 三艘船 問題描述 明明由於工作的關係,經常需要坐船到某地出差辦事。久而久之,明明就對這兩地之間船的班次情況相當了解,他會根據辦事的具體情況選擇不同班次的船出行。這兩地的船一共分為三個班次 特快船 快船 慢船,三個班次的船在同一天的0點從港口出發,並沿著同一路線勻速航行,只是它們到達目的地的時刻...