原创 C++this指針幹什麼用的

class Test{ public: void func(){ cout<<"mvalue:"<<mvalue<<endl; } private: int mvalue; }; int mai

原创 線段樹

題目:對一個數組重複的隨機的找一段連續數據進行求和(query)以及重複的隨機的改(updata)某一個位置處的值 第一種解法:再開一個數組,這個數組用來存和,圖如下: void Sum_arr(int *arr,int len1, i

原创 用O(1)事件複雜度刪除第K個結點

刪除第K個結點其實主要就是刪除這個結點中的值,即可以刪除第K+1個結點,然後把它的它拿來放在第K個節點處就行了 Node **deleteKNode(Node **head, int k) { if((*head) == NULL)

原创 把字符串轉換成整數

注意:    atoi通過區分一個全局變量來區分當字符串爲空的時候返回的0和輸入的字符串是“0”的時候返回值的0,如果是非法輸入,返回0並把這個全局變量設爲一個特殊的標記。如果輸入是“0”,則返回0,不會設置全局變量。這樣當atio的調用

原创 把一個數組中的0全部移到數組的最後邊或者數組的最前邊

把所有爲0的數移到數組的最後邊  思想:從前往後遍歷一遍數組,將數組中的零全部用一個整型變量 ZeroNum記錄下來,當碰到一個非零的數據,就讓這個數向前移動ZeroNum個單位,即arr[i-ZeroNum] = arr[i]; 把數組

原创 C++中類的初始化列表

  這個初始化列表嚴格來說,應該叫做構造函數的初始化列表,一個對象的完整構造順序順序應該是:先按照成員變量的定義順序依次構造成成員變量,最後再調用當前類的構造函數構造一個新的對象,因此當構造函數調用時,說明成員變量(或者成員對象)早已初始

原创 斐波那契 跟 動態規劃的聯繫

上圖畫出了斐波那契的運算關係,我們發現 fib(4)、fib(3) 都是重複計算了,那麼按照這樣的方式計算完之後效率就很低很低了,時間複雜度爲 O(2^n),如果我們把faib(4)n的值先保存起來,下次直接用是相比前面的重複計算是不是

原创 關於迭代器失效的幾種情況

一、序列式容器迭代器失效   1、順序容器: vector:向量容器。底層是動態開闢的一維數組,內存可增長,每次增長2倍 deque:雙端隊列容器。底層是動態開闢的二維數組,一位數組裏全部存的是指針,二維數組是動態開闢的,所以說deque

原创 動態規劃——連續子段和

一、動態規劃的遞歸式:n是這組數的長度  公式意義:當以第 i-1個數字結尾的子數組中所有數字的和小於0時,如果把這個負數與第 i 個數累加,得到的結果比第 i 個數字本身還要小,所以這種情況下以第 i 個數字結尾的子數組就是第 i 個

原创 二叉搜索樹轉換成排序雙向鏈表

    因爲二叉樹中,每個結點都有兩個指向子節點的指針。在雙向鏈表中也有兩個指針,它們分別指向前一個和後一個結點。由於這兩種結點的結構相似,同時二叉搜索樹也是一種排序的數據結構,因此在理論上可能實現二叉搜索樹和排序鏈表的雙向鏈表的轉換。

原创 數組與二叉樹的轉換

1、利用數組轉換成二叉樹——後序的方式 TreeNode *Array_Tree(int *arr,int i, int n) { TreeNode *ptr = NULL; if(i > n || NULL == arr) {

原创 同步/異步在不同的模型中含義不相同以及阻塞、非阻塞

一、I/O模型中的同步/異步  1、在I/O模型中,同步I/O是說I/O的讀寫操作,是在I/O事件發生之後,由應用程序來完成的。對於異步I/O來說,它可以直接對I/O執行讀寫操作,這些操作告訴用戶內核緩衝區的位置,以及I/O操作完成之後內

原创 Shell程序設計

一、爲什麼要使用shell編程呢? (1)是可以快速、簡單地完成編程 (2)如果你有一個簡單的構想則可以通過它來檢查自己的想法是否可行 (3)shell非常適合於編寫一些執行相對簡單的任務的小工具,因爲它們更強調的是易於配置、易於維護和可

原创 Linux下共享內存的應用場景以及三種共享內存的方式

一、應用場景 1、進程間通訊——生產者消費者模式    一個現場負責產生數據,一個現場負責處理數據,那麼我們可以用主線程作爲生產者,從鍵盤獲取數據寫入共享緩衝區,另一個線程作爲消費者,從共享緩衝區讀取數據,並打印。當然,這裏要解決互斥的問

原创 new和 malloc區別以及delete和free的區別

一、new和malloc的區別 其實new的底層也是使用malloc來實現的,只不過在類類型中比malloc多了一個調用構造函數來初始化的功能 1、返回值 new開闢內存需要指定類型,返回指定類型的指針,因此不需要進行強轉 malloc的