原创 動態規劃-字符串處理二題

第一題來自leetcode: 給一個字母組成的字符串,問最少插入多少字符,使其變成迴文串。 這題估計着可以用動態規劃解,不過乍看上去,不知如何下手。問題在於如何處理“最少插入字符”。顯然最多插入個數是n-1(n是原字符串長度,其中一個做中

原创 Fibonacci數列變例之一

題目來自昨天看到的一篇博客,在一個變形的Fibonacci數列中,求第N個數。變形之處是,當前兩個數之和大於10時,將和拆成兩個一位數。比如: 0 2 2 4 6 1 0 1 1 2 3 5 8 1 3 3 4 7 1 1 2 3 5 8

原创 網頁前端持續集成(1) - JSCoverage的使用簡介

    公司項目組使用jscoverage對被測試過的js文件作代碼覆蓋率檢測。上一個tag的代碼,jscoverage運行的好好的。到了新的tag,由於工程文件作了調整,js源代碼文件所在路徑改動較大,導致jscoverage頁面上始終

原创 C++Primer中 智能指針一例分析

近期複習《C++Primer》,用的第四版。在13章複製控制中,書上給出了一個自定義智能指針的例子。代碼見下,純抄書。 關於這個例子,自己之前有個疑問,一直沒能解答,就是爲什麼我們已經用了U_Ptr class 封裝了實際使用的 int*

原创 動態規劃-有向無迴路圖中兩點間最遠距離

題目來源於《算法導論》第15章動態規劃的習題 15-1,顯然建議使用DP 對最小距離大家應該都比較熟悉,比如對非負權值圖中有Dijkstra算法,對負權值圖中有Ford算法。  最遠距離?假設從A到F的最遠距離爲A->C->D->E->F

原创 pass all options of from View to controller

前幾天做了點簡單的.net MVC相關的東西。有個需求是是把頁面上一個列表的所有選項都傳回給controller. 多選框的內容,在頁面可以刪除和添加。初始代碼如下: Index.cshtml: <div>

原创 [oj.leetcode] #179 - LargestNumber, 如何在7ms內跑完 221個測試用例

題目:已知一個整型數組,如何排列使得最後組成一個最大整數,輸出這個整數的字符串,假設都是非負。 比如[3, 30, 34, 5, 9], 結果應該是 9534330 這裏選用C++。 第一感覺應該是跟排序相關,穩妥方案是快速排序quick

原创 網頁前端持續集成(2) - qunit+JSCoverage+PhantomJS使用小記

今年早些時候爲公司項目做過一些網頁前端程序的持續集成(CI),在過去的幾個月中不斷地給不同的人講解過之後,我決定開一篇介紹一下。 公司項目是一個ASP.net的網站,其中核心是一些JavaScript 的框架庫以及擴展函數。基本目標是在J

原创 遞歸一題三解-將二分查找樹(BST)轉化成循環雙鏈表(DLL)

題目來自leetcode: 已知一個BST(binary search tree), 將其原地轉化成一個循環的排序過的雙鏈表(circular sorted double linked list)。 說明:BST的節點有兩個指針left,

原创 線性查找-股票最佳收益

題目一:已知一個整型數組,表示某隻股票在每天的價格(假定每天價格保持一定,並且可買入可賣出),如果只允許買入一次賣出一次, 問最佳受益是多少? 這題跟數組最大距離恰成互補,這題簡化之後就是 已知A[n], 問找到 j > i, 使得A[j

原创 複製數據結構 - 單鏈表及圖

這次依然是兩道算法題,複製單鏈表,及複製圖。先後對其加以分析,最後會給出一些粗淺總結。 題目一,複製一個單鏈表(SLL - single linked list), 其節點除了一個基本的後向指針(next), 還有一個指向鏈表中任意一個節

原创 [以太坊源代碼分析]III. 挖礦和共識算法的奧祕

本系列的前兩篇分別介紹了以太坊的基本概念,基本環節-交易,區塊、區塊鏈的存儲方式等,這篇打算介紹一下“挖礦“得到新區塊的整個過程,以及不同共識算法的實現細節。 1.待挖掘區塊需要組裝 在Ethereum 代碼中,名爲miner的包(pac

原创 [以太坊源代碼分析] I.區塊和交易,合約和虛擬機

最近在看以太坊(Ethereum)的源代碼, 初初看出點眉目。 區塊鏈是近年熱點之一,面向大衆讀者介紹概念的文章無數,有興趣的朋友可自行搜索。我會從源代碼實現入手,較系統的介紹一下以太坊的系統設計和協議實現等,希望能提供有一定深度的內容,

原创 [以太坊源代碼分析] II. 數據的呈現和組織,緩存和更新

在Ethereum的世界裏,數據的最終存儲形式是[k,v]鍵值對,目前使用的[k,v]型底層數據庫是LevelDB;所有與交易,操作相關的數據,其呈現的集合形式是Block(Header);如果以Block爲單位鏈接起來,則構成更大粒度的

原创 [以太坊源代碼分析] V. 從錢包到客戶端

以太坊作爲一種數字貨幣以太幣的運行系統,顯然它也會有類似於錢包的客戶端程序,用來提供管理賬戶餘額等功能。我們知道,存放(或者綁定,掛靠)以太幣的賬戶,在代碼中以Address類型變量存在,所以能夠管理多個以太坊賬戶應該屬於客戶端程序基本功