原创 TC++PL第十二章 派生類

p278 多態性:從類Employee的函數中取得“正確的”行爲,而又不依賴於實際使用的到底是哪一種Employee(我怎麼覺得是依賴的?不是明確聲明瞭m是manager嗎?那調用的肯定就是manager的print()啊~~),這就是所

原创 vim格式對齊命令

這個很好用方法一:命令模式下:=:1,$方法二:gg(把關標定位到最上面),V(進入VISUAL模式),shift+g(選中整篇文本),然後=。方法三:gg=G

原创 樹的高度

原題 有一個棵樹,不一定是二叉樹,有n個節點,編號爲0到n-1。有一個數組A,數組的索引爲0到n-1,數組的值A[i]表示節點i的父節點的id,根節點的父節點id爲-1。給定數組A,求得樹的高度。 分析 這個題目我們首先把數組寫出

原创 虛函數表解析

前言   C++中的虛函數的作用主要是實現了多態的機制。關於多態,簡而言之就是用父類型別的指針指向其子類的實例,然後通過父類的指針調用實際子類的成員函數。這種技術可以讓父類的指針有“多種形態”,這是一種泛型技術。所謂泛型技術,說白了就是試

原创 騰訊2015校園招聘技術類研發筆試題第七題

2、下面程序的運行結果是(C)//不會, #include using namespacestd; class Base { int x; public: Base(int b):x(b){} virtual voiddis

原创 動態規劃--揹包問題、比值問題轉揹包問題

動態規劃--dynamic programming     可以用動態規劃解決的問題都可以通過直接遞歸來解決,但這樣的時間複雜度通常都會高達指數關係。所以,通過以空間換時間的代價,用dp通常可以達到o(N*M)的時間複雜度,至於空間複雜度

原创 寫入位置時發生訪問衝突

寫入位置時發生訪問衝突 原因總結: 1:使用了未初始化的指針(未給指針分配空間) 2:使用了已經刪除的指針 3.char str[]="ABCD",這個數組的存儲空間是在棧中開闢的(在棧中開闢了一個數組?) char *str

原创 將數組中的所有奇數放到所有偶數前面--函數指針

題意:輸入一個整數數組,實現一個函數來調整該數組中數字的順序,使得所有奇數位於數組的前半部分,所有偶數位予數組的後半部分。 分析: (1)一般的做法:我們可以維護兩個指針,第一個指針初始化時指向數組的第一個數字,它只向後移動;第二個指針初

原创 靜態成員

如果一個變量是類的一部分,但卻不是該類的各個對象的一部分(如default_date),它就應該被聲明爲static靜態成員。一個static成員只有唯一的一個副本,而不像非static成員那樣在每個對象裏各有一份副本。同樣,一個需要訪問

原创 反轉鏈表--遞歸和非遞歸實現

遞歸實現: ListNode * ReverseList2(ListNode * head) { //如果鏈表爲空或者鏈表中只有一個元素 if(head==NULL || head->m_pNext==NULL

原创 字符串的全排列和組合算法

全排列在筆試面試中很熱門,因爲它難度適中,既可以考察遞歸實現,又能進一步考察非遞歸的實現,便於區分出考生的水平。所以在百度和迅雷的校園招聘以及程序員和軟件設計師的考試中都考到了,因此本文對全排列作下總結幫助大家更好的學習和理解。對本文有任

原创 動態規劃--斐波那契數列

斐波那契數列定義: 如果按遞歸的方式: 很顯然,會有很多重複,導致時間複雜度成指數級上升。而事實上算過的數沒必要重複計算,比如從下往上計算,根據f(0)和f(1)算出f(2) ,再根據f(1)和f(2)算出f(3)……依此類推就可以算

原创 二分查找

//循環實現 int BinarySearch(int* arr,int low,int high,int target){ int mid; while(low<=high){ mid=(low+high)/2; if(ar

原创 刪除字符

原題 刪除字符串中的“b”和“ac”,需要滿足如下的條件: 字符串只能遍歷一次 不能夠使用額外的空間 例如: acbac ==> "" aaac ==> aa ababac ==> aa bbbbd ==>

原创 位運算--一個整數的二進制表示中1的個數

題意:請實現一個函數,輸入一個整數,輸出該數二進制表示中1 的個數。例如把9 表示成二進制是1001,有2 位是1,因此如果輸入9,該輸出2 。 解法一:flag=1,將整數n與flag做位與,判斷位與結果是否爲1,爲1則計數加一;fla