原创 比比Java和C#語言運行的快慢

前言:閒來無事,在圖書館隨便看看書,發現不論是在論壇還是寫書的作者都喜歡將Java和C#拿來比較一番。談論語言的是非。所以我決定,從語言的運行快慢來比較一下究竟哪種語言快些。 一、代碼測試時間對比 C#代碼測試 測試代碼如下:

原创 【STL源碼剖析】Sort算法

前言:sort算法必須拿出來單獨將,因爲它是STL所有算法中最複雜最龐大的一個,就像我肯定會把copy算法單獨列出來一樣,這兩個算法太重要了。 提示:STL算法特點是,前兩個形參變量都是迭代器指針。並且每個算法都有兩個版本,一個是

原创 C/C++易錯難點筆記02

C++有很多基礎但是,又容易出錯的地方,也有很多我們 沒有關注的地方,這裏慢慢總結積累,記錄下來。 基礎知識點 1. 易誤解:如果int a[5], 那麼a與&a是等價的,因爲兩者地址相同。 解答:一定要注意a與&a是不一樣的,雖

原创 面試筆試細節彙總

這裏記錄我們面試筆試過程中遇到的一些不懂或模棱兩可的題目。 虛析構函數的作用 在繼承體系中,虛析構函數可以防止基類不被析構。 如:class B : public A;A是基類,B是派生類。 A* pa = new B;del

原创 C/C++易錯難點筆記03

在做C++各類題目的過程中,有很多題目看似,卻有點難(對於我來說~~),所以我將這些題目積累慢慢積累下來,並記錄。 1. 在32 bit系統中函數foo(2^31-3)的值是: int foo(int x) { retur

原创 【動態規劃】求二維數組走法路徑種數

問題 給定二維數組,從左上走到右下的走法種樹,數組中1代表該格可以走,0代表不能走。且只能向下和向右走。 解法 典型的動態規劃問題: dp[i][j]表示從[0][0]到[i][j]的走法數量。 狀態轉移方程: dp[0][j] = 1

原创 【數字之魅】尋找最大的K個數(求第k大的數)

前言:編程之美上並沒有給出實際的代碼,這裏我參考yoona博主的做法自己也寫了一遍,並記錄下來。 與此相似的題目是: - 求第k大的數 - 求第k小的數 這裏給出比較好的兩個做法,分別是快排思想和堆思想,至於怎麼做的這裏就不重

原创 【算法】九大排序算法總結

數據結構 這裏我不採用數組來進行排序,而是採用更加符合應用的數據結構來排序。 #define M 100 typedef int datatype; typedef struct node{ datatype r[M+1];

原创 【結構之法】二叉樹中節點的最大距離

前言:編程之美中的解法並不是最好的,所以這裏給出大神的解法。 問題: 如果我們把二叉樹看成一個圖,父子節點之間的連線看成是雙向的,我們姑且定義”距離”爲兩節點之間邊的個數。寫一個程序求一棵二叉樹中相距最遠的兩個節點之間的距離。 思路

原创 【算法】Fibonacci解法總結

我這裏說的Fibonacci數列不僅僅是f(n-1) + f(n-2)的情況,也可以是f(n-1) + f(n-2) + … + f(n-k)的情況。但是這裏我們用f(n-1) + f(n-2)來進行討論,簡化理解,舉一反三。 解法一,遞

原创 【動態規劃】求最長公共子串,最長迴文子串

題目 : 給定兩個字符串,求出它們之間連續的最長的相同子字符串的長度。 eg : fbaabe,ebaabf,連續最長子串長度爲4。 注意:求最長迴文子串也可以用求最長公共子串來求,只需將字符串反轉作爲另外一個字符串,迴文部分反轉之後不

原创 【算法】判斷二叉樹是否是平衡二叉樹

問題:判斷一個二叉樹是否是平衡二叉樹。 分析:平衡二叉樹要求左子樹和右子樹的高度相差爲1,且左右子樹都是平衡二叉樹。遞歸可以很好的解決這個問題。但是首先要求樹的深度。 代碼實現: typedef struct tree { int d

原创 【動態規劃】硬幣面值組合(上臺階)

問題 1分2分5分的硬幣三種,組合成1角,共有多少種組合? 有1分,2分,5分,10分四種硬幣,每種硬幣數量無限,給定n分錢,有多少中組合可以組成n分錢? 一個人上臺階可以一次上1個,2個,或者3個,問這個人上n層的臺階,總共有幾種走法

原创 【動態規劃】求二維數組從左下到右上的最優路徑

1.求二維數組從左下到右上的最優路徑,使得路徑和最大,並且只能向上或向下走。 解析:求最短路徑,路徑和最優等都可以用動態規劃做。 dp[i][j]表示到i,j座標的最優路徑。 第一,確定初始條件。即向上向左的最優路徑確定 dp[i

原创 【動態規劃】求一維子數組的最大和

題目:輸入一個整形數組,數組裏有正數也有負數。數組中連續的一個或多個整數組成一個子數組,每個子數組都有一個和。求所有子數組的和的最大值。要求時間複雜度爲O(n)。 例如,輸入的數組爲1, -2, 3, 10, -4, 7, 2, -5,