第一題:鍊錶遍歷+鍊錶複製
題解:由於查詢是隨機的,跟遍歷順序無關,因此通過雜湊記錄所有需要查詢的節點值。通過前序遍歷樹並更新路徑,在遍歷樹的過程中判斷,雜湊表中存在的值就將當前路徑鍊錶複製,並將頭指標儲存在對應節點的map中,最後根據查詢順序輸出。
第二題:動態規劃(75%)
題解:通過構建dp陣列,自底向上依次遍歷結果,根據查詢輸出。不過資料n最大位2*10^9,記憶體不夠,只通過了75%
此題與一樣,更好的方法是自頂向下+記憶化搜尋的方法。
第三題:排序+優先佇列(90%)
對給定的每個陣列先進行排序,然後對每次查詢,構建乙個最大堆,來維護最小的k個數,在填充時,對每個子陣列,當其遍歷至值大於堆頂時,退出(因為已經有序,後序的必然都大於堆頂)。
更好的方法:排序+二分,判斷方法:對每個中值,二分找到最每個子陣列中小於它的數量(lower_bound),所有數量求和,大於k說明中值太大,調整邊界即可。
第四題:二分(40%)
題解:對排序後的陣列進行進行中位數二分,judge函式寫的有問題,有情況滅考慮到,只a了40%。
更好的方法:排序方式不對,按照min從小到達排序,再按max從大到小排序,修改好judge函式即可。
bool judge(vector>&data, int target, int w)
else if (data[i][1] < target&& num > 0)
return 0;
else
} //cout << endl;
return sum <= w;
}int main()
sort(data.begin(), data.end());
while (l < r)
if (judge(data, l, w))
cout << l;
else
cout << l - 1;
return 0;
}
參考大佬答案可見: 騰訊筆試記
這是乙個千載難逢的機會,這是乙個程式愛好者之間的擂台,這是一次千里挑一的冒險,這是乙個走向地獄與天堂的路口,這是一場充滿著變數的遊戲,歸根結底,這是一次筆試 筆試嘛,考的是什麼?是知識,是細心,是心理素質。從今天凌晨2點27分收到筆試的簡訊通知,心裡著實開始緊張了,我的心裡素質一向不太發達,尤其是面...
騰訊筆試總結
1 二叉樹遍歷例如 先序 中序 後序 2元件可靠性 3記憶體分配 最佳,最差,迴圈等 4命令 chown chmod 5那種方案是安全的。作業系統。程序,可用資源數,最大分配,已經分配 6測試用例 7最短路徑 8位址轉換 9sizeof 10雜湊函式,雜湊函式,衝突探測 11risc 12有限自動機...
騰訊筆試題
一.單選題 每題4 分,15題,共60分 1.考慮函式原型void hello int a,int b 7,char pszc 下面的函式呼叫鐘,屬於不合法呼叫的是 a hello 5 b.hello 5,8 c.hello 6,d.hello 0,0,2.下面有關過載函式的說法中正確的是 a.過載...