原创 算法之 有序鏈表和平衡二叉樹 有序數組與平衡二叉樹

題目描述: Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST. 給定

原创 算法之--數組分割

題目來源:編程之美2.18 有一個無序的,元素個數爲2n的正整數的數組,要求: 如何能把這個數組分割爲元素個數爲n的兩個數組,使得兩個子數組的和儘量接近。 解析:因爲兩個子數組的和是一定的,等於整個數組的和。現在要求使得兩個字數組

原创 Validate binary search tree

關於這道題目,不得不感慨leetcode真的是一個不錯的網站,之前的代碼是有bug的,當時AC了,現在測試用例更加完善了,於是不能AC了。 題目描述: Given a binary tree, determine if it is a

原创 算法之找出數組中出現次數大於n/m的元素

最經典的題目莫過於是: 在一個數組中找出出現次數超過n/2的元素?更進一步的,找出數組中出現次數大於n/3的所有元素? 注:這裏有一個很重要的事實,那就是出現次數大於n/m的元素的個數至多爲(m-1)個,比如出現次數大於n/3的至多隻有兩

原创 Python 之 @property

在閱讀廖雪峯的Python的筆記時,讀到了@property特性,發現略有不足,由於自己是初學,希望惠及更多的初學者吧。 @property 的用途是什麼呢? 下面一步一步地介紹。 定義類Student,擁有變量名name和scor

原创 C++標準庫之 Lower_Bound, upper_Bound

關於二分查找,這絕對是最簡單卻又最難的實現了,其各種版本可以參見http://blog.csdn.net/xuqingict/article/details/17335833 在C++的標準庫中,便提供了這樣的函數,lower_boun

原创 【提高C++性能的編程技術】讀書筆記2 -- 跟蹤實例

【紙上得來終覺淺】 這裏所說的跟蹤指的是跟蹤程序的運行過程。這裏討論跟蹤,旨在如何利用高效的跟蹤的代碼,使得跟蹤儘可能不增加源程序的額外開銷。 這裏的跟蹤其實很直觀,就是順着程序運行的軌跡,怎樣打印出程序的每一個階段的運行狀態的log

原创 swap vs templates 模板類中定義自己的swap函數

在模板類中如何定義自己的特定的swap函數: 模板類不同於一般的類,是因爲我們不能定義該模板特化的swap函數版本,因爲模板函數不允許偏特化,但是模板類支持偏特化,那麼這將導致矛盾~~ 具體解決辦法與解析見如下代碼。 可先參見前一篇博客:

原创 那些你不知道的默認構造函數~~

首先,本篇文章只講 “默認構造函數”,即如你所知,默認構造函數是不帶參數的構造函數。 編譯器會在 適當的時候 爲class合成一個默認構造函數 ~~ 先問以下兩個問題: 1    編譯器會爲任何沒有聲明構造函數的class,合成默認構

原创 絕不重新定義繼承而來的函數的缺省參數值

首先,此處的函數指的是 virtual 函數,爲什麼不是non-virtual函數呢?是因爲在public繼承中,non-virtual函數表示派生類是需要繼承其接口與其強制實現的。如果你的Derived已經在考慮重寫non-virtua

原创 C++ 轉型動作 儘量避免 以及 那些意想不到的威脅

看完EffectiveC++的關於轉型的章節,頓時覺得周圍的代碼都處在懸崖邊上~~ C的舊式轉型:inta = 10; double b = (double)a; 對於C++的四種轉型函數, const_cast去掉對象的常量性(只此

原创 C++ 標準庫值操作迭代器的常見函數

迭代器是C++標準庫中的重要組件,特別是在容器內部,沒有迭代器,容器也就無所謂存在了。 例如:vector容器簡而言之就是3個迭代器 start finish 以及end_of_storage vector的任何操作都離不開這3個迭代器。

原创 萬能的函數 之 接口繼承 實現繼承~~~

在public繼承中,(public 繼承表示的關係是 “is  a ” 的關係),其類中定義的函數主要有三類:pure virtual函數,impure virtual函數以及non-virtual函數。 這三種函數決定了public繼

原创 swap函數 一點兒都不簡單

相信大多數程序員都是用過swap函數,在STL庫中也實現了這個函數。大致如下: template<class T> void swap(T &a, T &b) { T temp(a); a = b; b = te

原创 透徹瞭解 inline的裏裏外外 絕不是那麼簡單

inline函數:比宏“安全”,不只是簡單的替代,有參數的檢驗。但是卻不需要一般函數調用的開銷。另外,編譯器的優化機制也會助你一臂之力,因爲編譯器的優化機制通常會用來濃縮那些“不含函數調用的”代碼,因此,inline的函數也享受這份特權。