Algorithms

一個用Java實現的雙向佇列,可以分別在頭尾插入和刪除節點

分析,雙向佇列的內部實現是一個雙向連結串列,可以分別從頭尾插入和刪除節點。 通常使用一個first指向頭 last指向尾。然後分別維護各種next和prev指標。通常情況要考慮邊界條件,即當佇列本身為空的時候插入新節點如何維護first和last的指向 刪除節點的時候,若佇列變為空又應該如何維護fi […]

機器學習演算法-樸素貝葉斯Python實現

引文:前面提到的K最近鄰演算法和決策樹演算法,資料例項最終被明確的劃分到某個分類中,下面介紹一種不能完全確定資料例項應該劃分到哪個類別,或者說只能給資料例項屬於給定分類的概率。 基於貝葉斯決策理論的分類方法之樸素貝葉斯 優點:在資料較少的情況下仍然有效,可以處理多類別問題 缺點:對於輸入資料的準備方 […]

TopCoder兼職賺錢入門

轉自:http://blog.csdn.net/skai_csdn/article/details/6167334 最近找我問TC的朋友越來越多,於是就想寫一個入門教程放在這裡。對我來說,TC目前是總收入的一個重要組成部分,雖然不如工資多,但是價效比極高。由於我基本只幹Design/Developm […]

迴圈佇列—實際專案的運用

此文主要記錄IPC專案中如何運用迴圈佇列來處理多則訊息的。 (網路攝像頭以下簡稱IPC) 在專案中,經常會有網路訊息處理。現在的安防攝像頭很多,通常也會配套一個APP去控制IPC,比如設定移動檢測、人臉識別、嬰兒哭識別等等。在APP點選一個button,可能會觸發APP通過網路傳送幾則訊息給攝像頭。 […]

經典氣泡排序,你寫對了嗎?

 氣泡排序可是排序入門級別的排序演算法了。演算法比較簡單,可是觀察周圍科班出身的學生或者應聘者,能將這一簡單排序演算法正確完整的寫出來的真的不多。據調查,出一道題給20個印度程式設計師寫程式碼,結果基本一樣,而中國的程式設計師的結果卻五花八門。這點對大型軟體設計效率的提高非常不利。現在就給出經典氣泡 […]

單連結串列的快速排序

單連結串列的特點是:單向。設頭結點位head,則最後一個節點的next指向NULL。如果只知道頭結點head,請問怎麼將該連結串列排序? 設結點結構為: struct Node{ int key; Node* next; }; 那麼一般人見到這種題目,立馬就會想到指標交換。是的,大家被指標交換的題目 […]

連結串列反轉

如何把一個單連結串列進行反轉? 方法1:將單連結串列儲存為陣列,然後按照陣列的索引逆序進行反轉。 方法2:使用3個指標遍歷單連結串列,逐個連結點進行反轉。 方法3:從第2個節點到第N個節點,依次逐節點插入到第1個節點(head節點)之後,最後將第一個節點挪到新表的表尾。 方法4:   遞迴 […]

二叉搜尋樹轉換成雙向連結串列

題目 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成一個排序的雙向連結串列。 要求不能建立任何新的結點,只能調整樹中結點指標的指向。 思路 中序遍歷:把一棵二叉排序樹看成三個部分,根節點,右子樹,左子樹, 根節點的左指標指向左子樹的形成連結串列的最後一個節點, 根節點的右孩子指向右子樹形成連結串列的第一個 […]

100層樓扔2個雞蛋、3個雞蛋……

原題目     現有2個雞蛋,樓高100層,假設從n層樓及以上扔下會摔碎,n層以下不會,那麼怎樣扔能以最小的次數得到n? 分析     最先想起來的是二分法的題目:100層最少需要扔多少次雞蛋才能求得n?答案是ceil(log2(100))=7 。不過現在只有兩個雞蛋,這種方法就不行了。採用二分法的 […]