題目:
容我吐槽一句:居然有問答題,最後一題考高併發也就算了,還考分布式儲存,本科生能有幾個人讀過 cap 這篇**呢(研究生也沒幾個人),卷不捲啊,太卷了.jpg
題目:link
通過unordered_map>
把具有相同喜好度的使用者分類在一起,保證在vector
中,使用者 id 是有序的。
對於特定的在
map[k]
這個vector
中用二分查詢即可。
lower_bound(begin, end, x)
是找到區間[begin, end)
中第乙個大於等於x
的位置。
upper_bound(begin, end, y)
是找到區間[begin, end)
中第乙個大於y
的位置。
兩個庫函式均通過二分查詢實現。
#include #include #include using namespace std;
int main()
int q;
cin >> q;
cin.ignore();
int l, r, k;
while (q--)
const auto &v = table[k];
auto litor = lower_bound(v.begin(), v.end(), l);
auto ritor = upper_bound(v.begin(), v.end(), r);
cout << distance(litor, ritor) << endl;
// cout << (ritor - litor) << endl;
}}
題目:link
使用vector> beads
去記錄每個珠子所包含的顏色。
列舉每一種顏色color
,然後使用滑動視窗去檢查該顏色是否滿足條件。時間複雜度為 \(o(c(n+m))\) .
#include #include #include #include using namespace std;
int n, m, c;
bool invalidcolor(vector> beads, int color)
// l=0, r=m, [0, m) has been checked
while (l < n)
return false;
}int main()
}int result = 0;
for (int i = 1; i <= c; i++)
result += invalidcolor(beads, i);
cout << result << endl;
}
以下函式使用二分查詢搜尋乙個增序的陣列,當有多個元素值與目標元素相等時,返回最後乙個元素的下標,目標元素不存在時返回-1。請指出程式**中錯誤或不符最佳實踐的地方(問題不止一處,請盡量找出所有你認為有問題的地方)
int binarysearchmax(const std::vector& data, int target)
// if (right < size && data[right] == target)
if (data[right] == target)
return right;
return -1;
}
錯誤很多,不如直接默寫乙個雙閉區間搜尋的模版:
int binarysearchmax(const std::vector& data, int target)
if (right < 0 || data[right] != target)
return -1;
return right;
}
至於「字元交換」這道詭異的 dp 和最後一題算了,真的沒做出來,題解看了也不太懂 2018後端面試經歷分享
0.背景 1.阿凡題 一面二面 三面一面 二面三面 3.果殼 一面二面 4.veeva 一面二面 三面四面 5.知乎 一面二面 三面6.春雨醫生 一面二面 三面7.360 一面二面 8.今日頭條 一面def fib n a,b 0,1 forx inxrange n a,b b,a b return...
2018今日頭條後端研發實習一面面經
自我介紹 tcp與udp的區別 http協議怎麼知道已完成資料傳送 記不清了 stl中hashmap解決衝突的方法 增大空間的方法 大檔案去重 現場程式設計筆試 撲克牌問題 當時太緊張沒想清楚,一直在找規律推結果,面試完才意識到這是一道簡單的模擬題而已。題目有已經發過部落格解析了,具體鏈結如下 第一...
2018百度Java後端面試真題,你會幾個?
1 給乙個函式,返回 0 和 1,概率為 p 和 1 p,請你實現乙個函式,使得返回 0 1 概率一樣。2 10 億個 url,每個 url 大小小於 56b,要求去重,記憶體 4g。3 把乙個 bst 轉化成乙個雙向鍊錶。4 http 和 https 區別,https 在請求時額外的過程,http...