原创 觀察者模式與依賴反轉原則

最近寫了一個“休息吧,程序員”的小工具,用到了觀察者模式,感覺自己的理解還不夠深入,藉此機會稍微深入學習一下。 項目介紹:提醒程序員不要過度工作的一個腳本,暖心程序跟你道晚安,使用觀察者模式實現,我把它叫做:休息吧,程序員!

原创 《劍指offer》合併兩個有序的數組

題意 這個問題和:http://blog.csdn.net/jacketinsysu/article/details/52303266,是差不多的,都是在給定的空間上做操作。 給定兩個升序的數組,v1有足夠的空間可以容易v1和v2

原创 《劍指offer》44:撲克牌裏的順子

問題 給定一個5個元素的數組(範圍0-13,對應撲克牌的),其中0可以代表任何數字,求這5個數字能否組成一個順子(即連續的5個數字,如2,0,4,5,0可以表示2,3,4,5,6)。 來源:牛客網 思路:模擬 隨便排個序,統計0

原创 算法導論:二叉搜索樹模板

今天看了算法導論的第12章《二叉搜索樹》,覺得裏面的過程的僞代碼很精巧,過程講解也很仔細易懂,所以就寫下這個二叉搜索樹模板。 樹類數據結構的關鍵操作是插入和刪除,查找和遍歷相對而言技巧性和難度一般吧。 插入 在一個while循

原创 Leetcode: Gray Code

原題鏈接:https://leetcode.com/problems/gray-code/ 我在github上的leetcode倉庫:https://github.com/cooljacket/leetcodes 題意 使用鏡像法

原创 Leetcode:Find Minimum in Rotated Sorted Array II

原題鏈接:https://leetcode.com/problems/find-minimum-in-rotated-sorted-array-ii 我在github上的leetcode倉庫:https://github.com/

原创 打印所有和爲s的連續正整數序列(至少含兩個數)

今天看了《劍指offer》裏的這道題,發現如果利用好等差數列的性質,其實可以有更好的解法! 題意 比如,s=15,那麼應該輸出以下三個序列: 7 + 8 = 15 4 + 5 + 6 = 15 1 + 2 + 3 +

原创 Leetcode: Find Minimum in Rotated Sorted Array

原題鏈接:https://leetcode.com/problems/find-minimum-in-rotated-sorted-array/ 我在github上的leetcode倉庫:https://github.com/co

原创 區間覆蓋與合併

問題 最近打google的apactest,遇到一個經典的(但我不熟的)問題——給你一堆整數區間(比如[1, 3], [2, 6], [8, 10]),問它們合併後是怎樣的? 比如上述三個區間合併後就變成:[1, 6], [8,

原创 《劍指offer》:自己寫一個pow函數

緣由 今天打google在codejam上辦的apactest,成績還行吧(最後排名540),第二題逗比了,自己邏輯後來理清楚,但是代碼還是原來的想法,wa了兩次才找到了bug。 第二題需要實現一個整數的pow函數,之前只會遞

原创 wc:統計一個文件裏出現某個單詞出現的次數

之前跟風在博客上也寫過這樣一個系列,不過堅持不了幾天就放棄了,因爲了解命令的用法確實挺費時間的,而且沒有實際的目標驅動,也很難堅持。就選一些最常用的來科普一下就好了。 今天碰到一道題是問如何統計一個文件裏出現某個單詞出現的行數

原创 leetcode: String to Integer (atoi)

原題:String to Integer (atoi) 這道題放在leetcode上,多了一些需求,要求處理非法字符,其實是經典的字符串提取操作。 問題要求 一個字符串是合法的,則它的前綴必須是由若干個空格組成的(可以沒有),可以

原创 《劍指offer》43:n個骰子的點數

這道題其實也不難,遞歸的想法很簡單: 把目前n個骰子分成兩堆:1堆1個(可以枚舉點數1-6),1堆有n-1個。遞推到最後,n=0時,累計起來的點數的次數就+1啦 之所以寫這篇博客,是因爲我覺得書中的遞歸代碼寫得有點混亂(並沒有

原创 《劍指offer》45:約瑟夫問題

約瑟夫問題 這個問題太經典了,就是n個人圍成一圈,編號依次爲0,1,…,n-1,每m個人取一個人退出遊戲,求最終剩下的人的編號是多少? 思路1:模擬 自己隨便手寫個循環鏈表來模擬(不過寫得太醜啦): #include <cstdi

原创 Google筆試:Watson and Intervals

問題 這是今年(2016)google校招的筆試題(Round B的C題),難度比acm的低,但是也不簡單。 原題鏈接:http://code.google.com/codejam/contest/5254487/dashboa