原创 Leetcode 752打開轉盤鎖

題目 你有一個帶有四個圓形撥輪的轉盤鎖。每個撥輪都有10個數字: ‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’ 。每個撥輪可以自由旋轉:例如把 ‘9’ 變爲 ‘0’,‘0’ 變

原创 Leetcode(107)二叉樹的層次遍歷2

題目描述 給定一個二叉樹,返回其節點值自底向上的層次遍歷。 (即按從葉子節點所在層到根節點所在的層,逐層從左向右遍歷) 例如: 給定二叉樹 [3,9,20,null,null,15,7], 3 / \ 9 20

原创 Leetcode(104)二叉樹的最大深度

題目描述 給定一個二叉樹,找出其最大深度。 二叉樹的深度爲根節點到最遠葉子節點的最長路徑上的節點數。 說明: 葉子節點是指沒有子節點的節點。 示例: 給定二叉樹 [3,9,20,null,null,15,7], 3 / 9 20

原创 劍指Offer(19)包含min函數的棧

題目描述 定義棧的數據結構,請在該類型中實現一個能夠得到棧中所含最小元素的min函數(時間複雜度應爲O(1))。 代碼 class Solution { public: void push(int value) {

原创 Leetcde(67)二進制求和

題目描述 給定兩個二進制字符串,返回他們的和(用二進制表示)。 輸入爲非空字符串且只包含數字 1 和 0。 示例 1: 輸入: a = “11”, b = “1” 輸出: “100” 示例 2: 輸入: a = “1010”, b =

原创 Leetcode(69) x的平方根

題目描述 實現 int sqrt(int x) 函數。 計算並返回 x 的平方根,其中 x 是非負整數。 由於返回類型是整數,結果只保留整數的部分,小數部分將被捨去。 示例 1: 輸入: 4 輸出: 2 示例 2: 輸入: 8 輸出:

原创 Leetcode(10) 正則表達式匹配

題目描述 給定一個字符串 (s) 和一個字符模式 §。實現支持 ‘.’ 和 '’ 的正則表達式匹配。 ‘.’ 匹配任意單個字符。 ‘’ 匹配零個或多個前面的元素。 匹配應該覆蓋整個字符串 (s) ,而不是部分字符串。 說明: s 可能

原创 Leetcode(30) 與所有單詞相關聯的字串

題目描述 給定一個字符串 s 和一些長度相同的單詞 words。在 s 中找出可以恰好串聯 words 中所有單詞的子串的起始位置。 注意子串要與 words 中的單詞完全匹配,中間不能有其他字符,但不需要考慮 words 中單詞串聯

原创 劍指offer(18) 二叉樹的鏡像

題目描述 *操作給定的二叉樹,將其變換爲源二叉樹的鏡像。 輸入描述: 二叉樹的鏡像定義:源二叉樹 * 解題思路 是一個遞歸的思路,二叉樹可以轉換爲最小的子樹結構,然後對最小的子樹進行鏡像即可。 class Solution { pu

原创 Leetcode(29)兩數相除

題目描述 給定兩個整數,被除數 dividend 和除數 divisor。將兩數相除,要求不使用乘法、除法和 mod 運算符。 返回被除數 dividend 除以除數 divisor 得到的商。 示例 1: 輸入: dividend

原创 劍指offer(17)數的子結構

題目描述 輸入兩棵二叉樹A,B,判斷B是不是A的子結構。(ps:我們約定空樹不是任意一個樹的子結構) 解題思路 class Solution { bool isSubtree(TreeNode* pRootA, TreeNod

原创 Leetcode(25) K個一組翻轉鏈表

題目描述 給出一個鏈表,每 k 個節點一組進行翻轉,並返回翻轉後的鏈表。 k 是一個正整數,它的值小於或等於鏈表的長度。如果節點總數不是 k 的整數倍,那麼將最後剩餘節點保持原有順序。 示例 : 給定這個鏈表:1->2->3->4->

原创 Leetcode(22)括號生成

題目描述 給出 n 代表生成括號的對數,請你寫出一個函數,使其能夠生成所有可能的並且有效的括號組合。 例如,給出 n = 3,生成結果爲: [ “((()))”, “(()())”, “(())()”, “()(())”, “()()

原创 劍指offer(15)合併兩個排序的鏈表

題目描述 輸入兩個單調遞增的鏈表,輸出兩個鏈表合成後的鏈表,當然我們需要合成後的鏈表滿足單調不減規則。 解題思路 新建一個鏈表,存儲合併後的鏈表,返回 class Solution { public: ListNode* Me

原创 劍指offer(15)反轉鏈表

題目描述 輸入一個鏈表,反轉鏈表後,輸出新鏈表的表頭。 解題思路 /* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x),