原创 C++拷貝控制與資源管理

C++拷貝控制與資源管理 參考《C++ Primer》P452 拷貝控制與資源管理 當一個類需要自定義析構函數,那麼它幾乎肯定也需要定義拷貝構造函數和拷貝複製運算符。 如下例子: class HasPtr { public:

原创 判斷n以內所有素數

判斷n以內所有素數 偶爾會碰到跟素數相關的題目,需要我們快速找到n以內的所有素數,這裏記錄一種效率比較高的方法。 所有大於2的偶數都不是素數,因此我們從3開始找,每次步進2。 判斷一個數是否爲素數的方法是:判斷是否存在小於等於

原创 劍指Offer-斐波那契數列以及跳臺階問題

劍指Offer-斐波那契數列以及跳臺階問題 斐波那契數列: 1,1,2,3,5…… 規律:f(n) = f(n-1) + f(n-2) 題目描述: 輸入一個整數n,請你輸出斐波那契數列的第n項。 n<=39 分析:題目很簡

原创 C++鄰接表與有向圖

C++鄰接表與有向圖 參照《算法》實現了C++鄰接表表示的有向圖,實現了書中有向圖的各種算法,包括判斷有向圖可達性,尋找有向圖中的環,頂點的先序、後序和逆後序排列以及Kosaraju算法尋找強連通域。 具體算法不再記錄,直接參考《

原创 劍指Offer-棧

劍指Offer-棧 此處兩道題爲《劍指Offer》中舉例讓抽象問題具體化的21和22題,記錄一下實現思路。 題1,包含min函數的棧:定義棧的數據結構,請在該類型中實現一個能夠得到棧最小元素的min函數 思路:除了正常存入數據的普

原创 阿里巴巴自動駕駛三維點雲分割PointNet實現

阿里巴巴點雲分割(PointNet) 項目地址:https://github.com/Summit11/PointNet_AliData 本項目是點雲分割模型PointNet在DataFountain平臺上阿里巴巴自動駕駛三維點雲

原创 重新構建樹

重新構建樹 題目: 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序列{4,7,2,1,5,3,8

原创 返回數組指針

返回數組指針 因爲數組不能被拷貝,所以函數不能返回數組。不過,函數可以返回數組的指針或者引用。其中最直接的方法就是使用類型別名。 typedef int arrT[10]; //arrT是一個類型別名,表示含有10個整型數的類型

原创 Mac下Laravel的Homestead環境配置

Mac下Laravel的Homestead環境配置 準備開始學PHP後端,在看完PHP語法以及PHP的MVC設計模式以後,準備開始學習PHP的主流框架Laravel,Laravel準備了一個萬事俱備的虛擬環境Homestead,配

原创 劍指Offer-旋轉數組的最小數字

旋轉數組的最小數字 參見《劍指Offer》P66 題目描述: 把一個數組最開始的若干個元素搬到數組的末尾,我們稱之爲數組的旋轉。 輸入一個非遞減排序的數組的一個旋轉,輸出旋轉數組的最小元素。 例如數組{3,4,5,1,2}爲{

原创 C++鄰接表與無向圖

C++鄰接表與無向圖 參考《算法》,採用鄰接表實現圖結構,實現DFS以及BFS等算法。具體原理參考書本,此處給出C++版本實現。 #include<iostream> #include<queue> #include<algori

原创 劍指Offer-替換空格

劍指Offer-替換空格 題目: 請實現一個函數,將一個字符串中的空格替換成“%20”。例如,當字符串爲We Are Happy.則經過替換之後的字符串爲We%20Are%20Happy。 思路: 雙指針法(此處是記錄索引),

原创 模板實參推斷和引用以及move和forward詳解

模板實參推斷和引用以及move和forward詳解 從左值引用函數參數推斷類型 當一個函數的參數是一個左值引用時,我們只能傳遞給它一個左值,實參可以是const類型或非const類型,實參是const,則T被推斷爲const。

原创 Dijkstra算法學習

Dijkstra算法 Dijkstra算法是求解有向圖最短路徑的經典算法,計算從一個指定的初始結點到其他各個結點最短路徑。它的理論基礎就是一條最短路徑的子路徑也一定是最短的。 實現如下: 將所有結點分爲兩個集合,一個命名爲S集,

原创 .dat文件三維點雲可視化

我們做點雲重建,很多情況下激光掃描儀回傳的點雲數據是保存爲.txt或者.dat的,而並非PCL所支持的PCD格式,這個時候就需要我們自行寫代碼進行讀取 .dat文件讀取 我們的點雲數據文件如下所示,爲二進制.dat文件,其中每一行