要過年了,給各位苦逼的碼工們奉上乙份厚禮!
如下是國內某知名公司2023年的網路筆試題:
用你能想到的資料結構與演算法,管理乙個物件序列;這個物件序列應支援如下操作:
操作
時間複雜度
insert(key)
o(logn)或更好
remove(item)
o(logn)或更好
get(int index)
o(logn)或更好
獲取某一物件的索引
o(logn)或更好
count()
o(logn)或更好
item.next()取下乙個
平均o(1),最壞o(logn)
item.prev()取上乙個
平均o(1),最壞o(logn)
取到最小物件
o(logn)或更好
取到最大物件
o(logn)或更好
正向遍歷
o(n)
逆向遍歷
o(n)
寫盤o(n)
讀盤o(n)
(試題結束)
題目要求的每一點都很容易實現,但如果要全部實現,就不太容易了。所以,原題的筆試物件是三年以上工作經驗的程式設計師,且不限時間、不限地點、可以查閱任何資料!!無敵了!!!
出題人的意圖是要維護乙個有序的物件序列,以學生記錄為例(按名字排序):
class student 中c的index是1,但如果再插入b,則c的index就是2
* getindex()
* load(),注意,邊讀邊插的時間複雜度是o(nlogn),而題目要求o(n),就是說你幾乎不能有任何額外開銷,太狠了!
(另據小道訊息,任何乙個操作不允許使用遞迴!!)
好了,拋磚引玉,希望各位看官各顯身手,一起突破這三道難關!
資料結構實驗題目
1 集合的交 並 差運算 容易 問題描述 編制乙個能演示執行集合的交 並和差運算的程式。集合元素用小寫英文本母。基本要求 1 用線性表來儲存集合 2 分別實現交 並和差這三個集合運算 3 輸出結果 2成績統計 中等 問題描述 給出n個學生的m門考試的成績表,每個學生的資訊由學號 姓名以及各科成績組成...
資料結構拓展題目
本題要求實現乙個函式,將給定的單鏈表逆轉。函式介面定義 list reverse list l 其中list結構定義如下 typedef struct node ptrtonode struct node typedef ptrtonode list 定義單鏈表型別 l是給定單鏈表,函式revers...
資料結構題目記錄
有兩個稀疏矩陣a,b,規格分別是m n,n k 現在要求編寫乙個函式,來計算c a b,並且a,b.c矩陣皆由三元組儲存。函式程式段 先將兩個三元組轉換成矩陣,然後計算兩個矩陣的乘積,然後再轉化成三元組 void trimatmultiply int a 3 int b 3 int c 3 int ...