原创 雙線程交替修改變量 條件變量

這裏用到了條件變量。對於條件變量,它的作用是可以調度各個進程阻塞或者喚醒。每個條件變量都有兩個操作:wait和signal。wait操作可以把自身進程放於等待隊列中,並且緊急等待隊列非空的情況下可以喚醒第一個等待者。signal可以喚醒等

原创 並查集詳解

江湖上散落着各式各樣的大俠,有上千個之多。他們沒有什麼正當職業,整天揹着劍在外面走來走去,碰到和自己不是一路人的,就免不了要打一架。但大俠們有一個優點就是講義氣,絕對不打自己的朋友。而且他們信奉“朋友的朋友就是我的朋友”,只要是能通過朋友

原创 C++11 智能指針

c++裏面支持四種智能指針: auto_ptr, shared_ptr, weak_ptr, unique_ptr。 其中後三個是c++11支持,並且第一個已經被c++11棄用。爲什麼要用智能指針呢?因爲c++的內存管理是需要手動管理的,

原创 malloc,free 與new delete的區別

1 malloc與freeC語言的標準庫函數,new/delete是C++的運算符。它們都可用於申請動態內存和釋放內存。 2  對於非內部數據(比如int char*這種)類型的對象而言,光用maloc/free無法滿足動態對象的要求,這

原创 求連續區間和爲目標值的一種解題思路

今天在leetcode上面遇到了一道題,我覺得解題思路很好,在此記錄下來: 題目是: 給定一個放有字符和數字的數組,找到最長的子數組,且包含的字符和數字的個數相同。 返回該子數組,若存在多個最長子數組,返回左端點最小的。若不存在這樣的數

原创 求0到數字n中的所有數字中某一個數字k出現的總次數

今天在leetcode上面遇到了一道題: 編寫一個方法,計算從 0 到 n (含 n) 中數字 2 出現的次數。 這道題最好的解法是動態規劃。分析如下:設dp[i]標誌這個數字前i位中出現了2的次數,那麼我們需要求的是dp[i]和的d

原创 LL(1)文法與其對應的FOLLOW,SELECT和FIRST集

所謂LL1(1)文法是一種預測分析文法。 從文法的開始符號出發,從每一步推導過程中根據當前句型的最左非終結符A和當前輸入符號a能夠就能夠確定出一個產生式。這樣就是預測分析文法的工作過程。仔細想這個過程,假設有S -> aBC 和 S->a