因為沒有提前上測試平台,沒看清楚機試要求,不知道可不可以切屏到ide上程式設計,所以整晚所有程式設計題都是在京東的oj上做的,本來很簡單的題,知道可以用那些思路但是因為不熟模板或者庫函式的使用變得舉步維艱,結束後自己碼一下發現是很簡單的。
當時只拍了一道題,為了避開色相頭,拍的角度也不好,將就看吧。分析題意就知道,第一行數字為候選人的個數n,第二行數字為n個候選人目前的票數,其中小東的票數為該行的第乙個數字。
做法就是,每次將小東的票數跟剩下的n-1個候選人的得票最高的那個比較,如果小東的票數低了,則從最高者拿走一票,以此類推,知道小東比剩下的n-1個候選人的最高得票還高,此時小東就當選了,輸出累計的小東拿走的票數。如何每次得到剩下候選人的最高票數?乙個做法就是排序,每次最高票候選人被拿走一票之後,重新排序n-1個候選人們的票數,得到最高票數。但是這種做法效率比較低下,如何獲得最高得票和希望得到下乙個最高得票,也就是只需要整個結構區域性有序即可,可以考慮用一種常見的資料結構,就是堆,每次最高票候選人被抽走一票之後重新插入堆中,堆的刪除和插入都是log(n)比排序高多了。而在c++中優先佇列priority_queue就是一種堆的實現,事實上還有一些排序和佇列的結合實現。預設的,priority_queue是最大堆。
#include #include using namespace std;
int main()
// 若小東不是最高票的,則找出當前最多票的候選人,從他拿走一票給到小東
while (cordinate <= q.top())
cout << votes << endl;
}}
華為2016暑假實習機試題
華為技術崗上機測試有三道程式設計題,總體難度偏簡單,題目的質量一般。我指的一般,並不是說難度不高就代表不好,只是hw機試題部分題目說得比較模糊,有歧義,以至於我和同學後面討論的時候發現他原先bug百出的 也照樣能ac全部testcase。第一題 字串處理 最簡單的做法就是無需考慮輸入要求,直接把兩個...
京東4 7實習筆試題
官方題解 1.站隊,小偷和警察,剛開始想找每個小偷最近的警察,但是發現,如果找最近的警察,但是他的能力可能是小的,不滿足要求,那就需要其他辦法。然後從警察的角度看,他能抓住的小偷,由於每個警察 最多遍歷前後一共19個位置,所以複雜度是19n,線性的,滿足要求。注意邊界的檢查。1 include2 d...
京東2016筆試題
我的結果,深度搜尋。考試當場小毛病沒改出來16 正確率 後來發現橫縱座標寫反了。醉了。以後再也不用xy做座標了,用row col的話就不會想歪了。include include using namespace std int dfs vector map,int x,int y,int max,in...