原创 面試題[數學與概率]: 從數據流中隨機選取樣本

題目:輸入一段int型數據流,輸入未完成之前並不知道數據流的長度,要求在O(1)空間複雜度的前提下隨機選出一個元素,並保證每一個元素被選中的概率是一樣的。 我的解法如下: 假如輸入的數據流依次是10、20、30、40、…… 收

原创 Ubuntu在任一路徑下打開終端

sudo apt-get install nautilus-open-terminal 安裝完畢之後即可在任一路徑下打開終端了:

原创 C++學習:字符串分割函數

C++實現字符串分割有多種方式,個人認爲下面這種實現比較科學: template<typename StrType> void SplitString(const StrType& strSourceString, const S

原创 判定兩個集合是否相同

尋找合適的算法判定兩個集合是否相同,要求時間複雜度爲O(N),空間複雜度爲O(1),集合中的元素有可能是int,也有可能是string等。 解決方法:計算着每個集合所有元素的信息指紋(MD5或者SHA1算法),然後累加起來,判定兩

原创 C++學習:單例模式

模式介紹 單例模式也稱爲單件模式、單子模式,可能是使用最廣泛的設計模式。其意圖是保證一個類僅有一個實例,並提供一個訪問它的全局訪問點,該實例被所有程序模塊共享。有很多地方需要這樣的功能模塊,如系統的日誌輸出,GUI應用必須是單鼠標

原创 快速排序

快速排序是冒泡排序(http://blog.csdn.net/chfe007/article/details/44133349)的改進算法,本文選擇第一個元素作爲軸值,從小到達排序。 快速排序算法的一趟排序如下: int Part

原创 TopN算法

TopN算法:從已經存在的數組中,找出最大(或最小)的前n個元素。 算法(以找最大的n個元素爲例): 1. 取出數組的前n個元素,創建長度爲n的小根堆; 2. 從n開始循環數組的剩餘元素,如果當前元素比小根堆的根節點大,則將當

原创 LeetCode[Dynamic Programming]: Maximum Product Subarray

Find the contiguous subarray within an array (containing at least one number) which has the largest product.  For ex

原创 歸併排序

如果歸併排序中待歸併的兩個相鄰序列分別Wi是r[start]~r[mid]和r[mid+1]~r[end],需要將其歸併成一個新序列r1[start]~r1[end]: void merge(int r[], int r1[],

原创 Scrapy學習

學習Scrapy不要到網上找這種那種學習資料了,直接從官方文檔開始吧(有中文版): http://scrapy-chs.readthedocs.org/zh_CN/latest/intro/overview.html

原创 LeetCode[Backtracking]: Subsets

Given a set of distinct integers, S, return all possible subsets. Note: Elements in a subset must be in non-

原创 面試題[堆排序]: 二維數組的Top(N)

題目:一個二維數組,每一行都是升序排列的,但每一列並不一定是升序排列的,設計算法找出最大的N個數。 這類Top(N)算法,很容易想到堆排序,那麼建什麼堆呢?建多大的堆呢? 這個題目有個特點就是矩陣的最後一列是每一行的最大元素,

原创 解決Ubuntu安裝jdk之後的"java/lang/NoClassDefFoundError: java/lang/Object"錯誤

按照我的這篇博客安裝完jdk1.8.0_31之後,報這個錯誤: 解決方法: 將jdk1.8.0_31/lib/ tools.pack 轉爲 tools.jar 將jdk1.8.0_31/jre/lib/rt.pack

原创 《Effective C++》學習筆記

在operator=中處理“自我賦值” 在operator=最前面需要進行“證同測試”達到“自我賦值”的檢驗目的: Widget& Widget::operator=(const Widget &rhs) { if (th

原创 面試題[後綴數組]: 最長重複子串

題目:給定一個字符串,求出最長重複子串。 這個題目可以用後綴數組來解:對後綴數組排好序,這樣重複的子串就在相鄰的後綴中找就可以了。我的C++代碼實現如下: class Solution { public: string