1. 合併兩個有序陣列到其中乙個陣列中
將乙個資料插入另外乙個資料尾部,然後排序 sort(a.begin(), a.end())。
雙指標法把兩個陣列中的資料存入乙個臨時陣列中,然後將臨時陣列中的值賦值給指定陣列。
2. 尋找鍊錶中間節點
快慢指標都指向head節點,慢指標前進乙個,快指標前進兩個。
3. 有序鍊錶或陣列轉換為平衡二叉樹,也就是中序遍歷陣列回覆為平衡二叉樹
尋找中間節點,然後採用遞迴回覆平衡二叉樹,建立中間節點的二叉節點,然後該節點的左孩子指向nums(low,mid-1),右孩子指向nums(mid+1,high)。
4. 判斷兩個string 是否是同構的
兩個字元對應位置的字元出現的位置相同
s.find(s[i]) != t.find(t[i]),find返回下標。
5. 比較兩個string型別的版本號大小
根據 . 分隔符來計算每一段的大小,然後比較大小,然後迴圈進行下一位的比較。
6.二分法求中間mid值
int mid = left + (right - left) / 2; // 防止計算時溢位
int mid = (right + left) / 2; // 如果right + left值超過intmax會出現錯
7. 兩數相乘可能大於intmax
強制型別轉換為long : long res = (long)mid*mid;
8.二分法在判斷大小後:
left = mid +1;
right = mid-1;
否則可能出出現恆left9. 陣列在求二分法時:為防止左邊界越界。
int left = 0;int right = nums.size(); //有邊界為陣列長度,方便在陣列是偶數個數時的取值。
int mid = 0;
while(left <= right && left < nums.size())
10. 矩陣初始化乙個m*n大小的矩陣,二維陣列使用一定要先初始化
vector>v(m, vector(n));
11. 大頂堆 小頂堆
//公升序佇列 小頂堆priority_queue ,greater> q;
//降序佇列 大頂堆 預設大頂堆
priority_queue ,less>q;
常用的函式:push pop top empty
priority_queue> a; // pari型的資料,先比較第乙個元素,第乙個相等再比較第二個元素。第二個元素時q.top().second; 不是second();
17. queueq
push(elem); //從隊尾入對
pop(); //彈出隊頭元素
back(); //返回最後乙個元素
front(); //返回隊頭元素
12. vector賦值給vector
a.assign(b.begin(),b.end());
13. 求矩陣對角線是否相同:
matrix[i][j] == matrix[i-1][j-1]
14.歸併排序排序鍊錶
listnode* sortlist(listnode* head)
15. 整形轉string
string str = str +to_string
(left->val);
16.樹遞迴時將需要「累積」的變數通過傳引用的方式依次往下傳遞即可。
比如尋找所有路徑,就將path 作為乙個變數再遞迴中呼叫,將結束的path再放到乙個全域性變數中,同乙個變數再不同的路徑下會有不同的值。
17. 樹的先序訪問:
迭代法:根左右,因為要先訪問左節點,考慮棧先進後出,需要先把右節點放進棧中。
對於多叉樹的訪問:
void preorder(node* root, vector&res)}
18.判斷乙個樹是否是另外乙個棵樹的子樹,沒有很好的辦法,只能對主樹挨個節點與子樹對比。
19. 遍歷元素vector和string元素 :
string mostcommonword(string paragraph, vector& banned)}//unordered_set賦值操作: unordered_set s(str.begin(),str.end());
string str = "hello";
string
cur;
for(char
c:str)
20.訊號量的使用:
class foovoid first(functionprintfirst)
void second(functionprintsecond)
void third(functionprintthird)
}
21. mutex互斥鎖的使用:
交替列印,兩個物件可以各自加鎖,然後解對方的鎖。
class foobarvoid foo(functionprintfoo)
}void bar(functionprintbar)
}};
22. count統計string字串中字元的數量:
#include using namespace std;26. sort(vec.begin(), vec.end()) 是從小到大排序的。int main()
;
27. 座標兩點的距離:切比雪夫距離:簡而言之就是左邊兩點的距離(垂直水平和對角都算距離1),就是兩點形成的矩形的最長邊。
對於平面上的兩個點 x = (x0, y0) 和 y = (x1, y1),設它們橫座標距離之差為 dx = |x0 - x0|,縱座標距離之差為 dy = |y0 - y1|,對於以下三種情況,我們可以分別計算出從 x 移動到 y 的最少次數:dx < dy:沿對角線移動 dx 次,再豎直移動 dy - dx 次,總計 dx + (dy - dx) = dy 次;
dx == dy:沿對角線移動 dx 次;
dx > dy:沿對角線移動 dy 次,再水平移動 dx - dy 次,總計 dy + (dx - dy) = dx 次。
可以發現,對於任意一種情況,從 x 移動到 y 的最少次數為 dx 和 dy 中的較大值 max(dx, dy),這也被稱作 x 和 y 之間的 切比雪夫距離。
由於題目要求,需要按照陣列**現的順序來訪問這些點。因此我們遍歷整個陣列,對於陣列中的相鄰兩個點,計算出它們的切比雪夫距離,所有的距離之和即為答案。
28. 有返回值的遞迴
class solution}
30. string 操作:char *strstr (const char *s1, const char *s2); //在s1中尋找s2,並返回指標
31. 羅馬數字轉整數,字元排序決定了是累加還是累減。
32. 字串反轉
string s="123456"; reverse(s.begin(),s.end());
33.
京東2016筆試題
我的結果,深度搜尋。考試當場小毛病沒改出來16 正確率 後來發現橫縱座標寫反了。醉了。以後再也不用xy做座標了,用row col的話就不會想歪了。include include using namespace std int dfs vector map,int x,int y,int max,in...
京東2016筆試題
2016.年4月8日7點到9點考題,兩個程式設計題,就做出這乙個了,第二個沒時間了,感覺第二個程式設計題還好,不是很難 題目大致意思就是給定乙個8 8的棋盤,給定兩個點a,b,求從a到b需要走的最短步數,並列印最短路徑。走的每一步的方向可以為左 l 右 r 上 u 下 d 左下 ld 左上 lu 右...
網易9 9筆試題
一 重排數列 判斷數列重排之後是否可以滿足a i a i 1 是4的倍數 想複雜了。也不用動態規劃,直接統計數中4的倍數,不是4的倍數偶數和奇數的個數就好了。滿足cnt2 0時,cnt4 cnt1 1 或者cnt2 0時,cnt4 cnt1 時就滿足,否則不滿足 include using name...