原创 劍指offer:正則表達式C++實現

請實現一個函數用來匹配包括'.'和'*'的正則表達式。模式中的字符'.'表示任意一個字符,而'*'表示它前面的字符可以出現任意次(包含0次)。 在本題中,匹配是指字符串的所有字符匹配整個模式。例如,字符串"aaa"與模式"a.a"和"ab

原创 劍指offer:不是用乘除和判斷條件進行求和 C++

求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。 //使用靜態變量 //注意靜態變量屬於類,只能通過類進行訪問,同時需要再類外進行定義,靜態變

原创 劍指offer: 構建乘積數組 c++實現

給定一個數組A[0,1,...,n-1],請構建一個數組B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。(注意:規定B[0] = A[1]

原创 leetCode:C++求字符串的最長無重複字串

給定一個字符串,請你找出其中不含有重複字符的 最長子串 的長度。 示例 1: 輸入: "abcabcbb" 輸出: 3 解釋: 因爲無重複字符的最長子串是 "abc",所以其長度爲 3。 示例 2: 輸入: "bbbbb" 輸出: 1 解

原创 劍指offer :使用C++實現二叉樹的鏡像。

題目描述: 操作給定的二叉樹,將其變換爲源二叉樹的鏡像。 /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNod

原创 劍指offer:判斷一顆二叉數是否對稱C++

請實現一個函數,用來判斷一棵二叉樹是不是對稱的。注意,如果一個二叉樹同此二叉樹的鏡像是同樣的,定義其爲對稱的。   /* struct TreeNode { int val; struct TreeNode *left;

原创 劍指offer:之字形打印二叉數C++

請實現一個函數按照之字形打印二叉樹,即第一行按照從左到右的順序打印,第二層按照從右至左的順序打印,第三行按照從左到右的順序打印,其他行以此類推。   /* struct TreeNode { int val; struc

原创 劍指offer:鏈表中的環入口

給一個鏈表,若其中包含環,請找出該鏈表的環的入口結點,否則,輸出null。 /* struct ListNode { int val; struct ListNode *next; ListNode(int x)

原创 劍指offer:求二叉樹當前節點的在中序遍歷中的下一個節點

給定一個二叉樹和其中的一個結點,請找出中序遍歷順序的下一個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指針。   /* struct TreeLinkNode { int val; struct

原创 劍指offer:按照層的方式打印二叉數C++

從上到下按層打印二叉樹,同一層結點從左至右輸出。每一層輸出一行。   /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *r

原创 c++求編輯距離

題目描述 給定兩個字符串,已知可以使用三種方式進行變換 1. 插入一個字符 2. 刪除一個字符 3. 更改一個字符 請設計一個算法,找到兩個字符串之間的經歷幾次最小變換,可以字符串1轉換成字符串2 輸入描述: 輸入兩個字符串,字符串的長

原创 劍指offer:把字符串轉換成整數 C++

題目描述 將一個字符串轉換成一個整數,要求不能使用字符串轉換整數的庫函數。 數值爲0或者字符串不是一個合法的數值則返回0 輸入描述: 輸入一個字符串,包括數字字母符號,可以爲空 輸出描述: 如果是合法的數值表達則返回該數字,否則返回0

原创 劍指offer:隊列中的最大值-求滑動窗口中的最大值

題目: 給定一個數組和滑動窗口的大小,找出所有滑動窗口裏數值的最大值。例如,如果輸入數組{2,3,4,2,6,2,5,1}及滑動窗口的大小3,那麼一共存在6個滑動窗口,他們的最大值分別爲{4,4,6,6,6,5}; 針對數組{2,3,4,

原创 [劍指offer] :二叉搜索樹中的第k小值 C++

題目: 給定一棵二叉搜索樹,請找出其中的第k小的結點。例如, (5,3,7,2,4,6,8)    中,按結點數值大小順序第三小結點的值爲4。 /* struct TreeNode { int val; struct T

原创 【劍指offer】:數據流中的中位數:使用大根堆和小根堆,C++

題目: 如何得到一個數據流中的中位數?如果從數據流中讀出奇數個數值,那麼中位數就是所有數值排序之後位於中間的數值。如果從數據流中讀出偶數個數值,那麼中位數就是所有數值排序之後中間兩個數的平均值。我們使用Insert()方法讀取數據流,使用