原创 718. 最長重複子數組;424. 替換後的最長重複字符

給兩個整數數組 A 和 B ,返回兩個數組中公共的、長度最長的子數組的長度。 示例 1: 輸入: A: [1,2,3,2,1] B: [3,2,1,4,7] 輸出: 3 解釋:  長度最長的公共子數組是 [3, 2, 1]。 說明:

原创 889. 根據前序和後序遍歷構造二叉樹;114. 二叉樹展開爲鏈表

返回與給定的前序和後序遍歷匹配的任何二叉樹。  pre 和 post 遍歷中的值是不同的正整數。   示例: 輸入:pre = [1,2,4,5,3,6,7], post = [4,5,2,6,7,3,1] 輸出:[1,2,3,4,5,6

原创 173. 二叉搜索樹迭代器;劍指 Offer 38. 字符串的排列

實現一個二叉搜索樹迭代器。你將使用二叉搜索樹的根節點初始化迭代器。 調用 next() 將返回二叉搜索樹中的下一個最小的數。 /** * Definition for a binary tree node. * struct Tr

原创 線段樹;84柱狀圖中最大的矩形

線段樹 用處:給定數組v(n),求數組某區間[i,j]內的最大值(下標)/最小值(下標)/和 struct SegTreeNode { int le,ri; //區間左右值,數組[le,ri],le和ri對應數組v的下標

原创 c++排序算法:冒泡,插入,選擇+快排,堆,歸併,希爾+計數,基數,桶

冒泡排序 /* (無序區,有序區)。從無序區通過交換找出最大元素放到有序區前端。 選擇排序思路: 1. 比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。 2. 對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完

原创 Morris二叉樹前中後序遍歷,O(n)時間,O(1)空間,直接記憶背誦

記憶口訣:循環當前,左右到底,右子有無,當前左右,後前前中                後左尾頭,右子反轉,next開頭,首尾相接,遍歷反轉 0)前中後代碼框架 TreeNode *cur=rootr,*temp=nullpt

原创 415字符串相加;43字符串相乘;46全排列;47全排列 II

給定兩個字符串形式的非負整數 num1 和num2 ,計算它們的和。 注意:     num1 和num2 的長度都小於 5100.     num1 和num2 都只包含數字 0-9.     num1 和num2 都不包含任何前導零

原创 1297 子串的最大出現次數;145/94/144迭代遍歷二叉樹(前中序,和我之前一篇Morris遍歷一起記憶背誦)

給你一個字符串 s ,請你返回滿足以下條件且出現次數最大的 任意 子串的出現次數:     子串中不同字母的數目必須小於等於 maxLetters 。     子串的長度必須大於等於 minSize 且小於等於 maxSize 。  

原创 152乘積最大子數組;200島嶼數量;並查集;207課程表;拓撲排序

給你一個整數數組 nums ,請你找出數組中乘積最大的連續子數組(該子數組中至少包含一個數字)。   示例 1: 輸入: [2,3,-2,4] 輸出: 6 解釋: 子數組 [2,3] 有最大乘積 6。 示例 2: 輸入: [-2,0,-

原创 127. 單詞接龍;131. 分割回文串

給定兩個單詞(beginWord 和 endWord)和一個字典,找到從 beginWord 到 endWord 的最短轉換序列的長度。轉換需遵循如下規則:     每次轉換隻能改變一個字母。     轉換過程中的中間單詞必須是字典中的

原创 386. 字典序排數;129. 求根到葉子節點數字之和

給定一個整數 n, 返回從 1 到 n 的字典順序。 例如, 給定 n =1 3,返回 [1,10,11,12,13,2,3,4,5,6,7,8,9] 。 請儘可能的優化算法的時間複雜度和空間複雜度。 輸入的數據 n 小於等於 5,000

原创 93. 復原IP地址;103. 二叉樹的鋸齒形層次遍歷

給定一個只包含數字的字符串,復原它並返回所有可能的 IP 地址格式。 有效的 IP 地址正好由四個整數(每個整數位於 0 到 255 之間組成),整數之間用 '.' 分隔。   示例: 輸入: "25525511135" 輸出: ["25

原创 109有序鏈表轉換二叉搜索樹;116. 填充每個節點的下一個右側節點指針;117. 填充每個節點的下一個右側節點指針 II

給定一個單鏈表,其中的元素按升序排序,將其轉換爲高度平衡的二叉搜索樹。 本題中,一個高度平衡二叉樹是指一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。 示例: 給定的有序鏈表: [-10, -3, 0, 5, 9], 一個可

原创 717. 1比特與2比特字符;89. 格雷編碼-鏡像反射法-2進制碼轉格雷碼;92反轉鏈表 II

有兩種特殊字符。第一種字符可以用一比特0來表示。第二種字符可以用兩比特(10 或 11)來表示。 現給一個由若干比特組成的字符串。問最後一個字符是否必定爲一個一比特字符。給定的字符串總是由0結束。 示例 1: 輸入:  bits = [1

原创 82刪除排序鏈表中的重複元素 II;86分隔鏈表-1-2;90子集 II

給定一個排序鏈表,刪除所有含有重複數字的節點,只保留原始鏈表中 沒有重複出現 的數字。 示例 1: 輸入: 1->2->3->3->4->4->5 輸出: 1->2->5 示例 2: 輸入: 1->1->1->2->3 輸出: 2->3