求解递推方程
主定理可以非常方便的得到T(n)=aT(n/b)+f(n)T(n)=aT(n/b)+f(n)T(n)=aT(n/b)+f(n) 这一类递推方程的解,但是应该注意使用主定理的条件,必须条件满足才能使用主定理。
/* 函數:int* MakeSkip(char *, int) 目的:根據壞字符規則做預處理,建立一張壞字符表 參數: ptrn => 模式串P PLen => 模式串P長度 返回: int* -
2億個整數中求最大的100萬之和 題目:有一個文件中保存了2億個整數,每個整數都以' '分隔。求最大的100萬個整數之和。 算法: 1. 首先建立一個容量爲100萬(nTop)的int數組,從文件讀取整數填充。 2. 利用堆維護該100萬
判斷n以內所有素數 偶爾會碰到跟素數相關的題目,需要我們快速找到n以內的所有素數,這裏記錄一種效率比較高的方法。 所有大於2的偶數都不是素數,因此我們從3開始找,每次步進2。 判斷一個數是否爲素數的方法是:判斷是否存在小於等於
劍指Offer-斐波那契數列以及跳臺階問題 斐波那契數列: 1,1,2,3,5…… 規律:f(n) = f(n-1) + f(n-2) 題目描述: 輸入一個整數n,請你輸出斐波那契數列的第n項。 n<=39 分析:題目很簡
C++鄰接表與有向圖 參照《算法》實現了C++鄰接表表示的有向圖,實現了書中有向圖的各種算法,包括判斷有向圖可達性,尋找有向圖中的環,頂點的先序、後序和逆後序排列以及Kosaraju算法尋找強連通域。 具體算法不再記錄,直接參考《
Problem Given a 2D board and a word, find if the word exists in the grid. The word can be constructed from letters
哈夫曼編碼原理以及實現 哈夫曼編碼的主要用途: 哈夫曼編碼主要用於數據壓縮,通常可以節省20%-90%的空間,具體的壓縮率依賴於數據的特性。下面舉個簡單的例子說明對於字符不同編碼方式所使用的空間大小。 從圖中可以看出: 1、定長編碼6個
堆排序原理以及實現 堆性質的簡介 堆是以二叉樹的形式存儲的一種數據結構,常見的堆的使用方式主要包括:堆排序,優先隊列的構造。堆主要分爲最小堆與最大堆,最小堆的主要性質是根結點小於等於兩個子結點的值,同理可得,最大堆的主要性質是根節點大於等
二叉搜索樹又名爲二叉查找樹、有序二叉樹、查找二叉樹,是一種很重要的基礎性數據結構,支持多種動態集合操作,包括插入、刪除、查找等操作。二叉樹的優勢在於查找、插入的時間複雜度較低,爲O(lg n),不過如果數據不好,最壞的時間複
/****date:2014.12.07*****//***單鏈表節本操作***/ 單鏈表:是物理存儲單元非連續、非順序的存儲結構,數據元素的邏
/****date:2014.12.08*****/ /***順序棧的基本操作***/ /*** Last in First out ( LIFO
[size=medium][b]設計算法,求 x 的 n 次冪:pow(x, n)[/b][/size][b]算法一[/b]public class
[color=green][size=medium][b]動態規劃(DP: Dynamic Programming)[/b][/size][/colo
Problem Code typedef struct { int *value; //Array to put elements int minIndex; //The minimum's inde
Problem Code int singleNumber(int* nums, int numsSize) { int tmp = 0; for(int i=1;i<numsSize;++i){