原创 Leetcode——653. 兩數之和 IV - 輸入 BST

題目傳送門 思路: 遍歷一下樹(我這裏用的層序遍歷),然後將目標值k-當前節點的值所得到的差值存入unordered_set這個hashset,然後遍歷的時候驗證當前節點是否在hashset裏面,如果存在的話說明這個節點就是之前期

原创 Leetcode——606. 根據二叉樹創建字符串

題目傳送門 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; *

原创 Leetcode——538. 把二叉搜索樹轉換爲累加樹

思路: 類似於中序遍歷但是是右子樹->根節點->左子樹這樣來。 /** * Definition for a binary tree node. * struct TreeNode { * int val; *

原创 Leetcode——501. 二叉搜索樹中的衆數

思路:中序遍歷後對遍歷得到的數組進行計數/排序。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * Tre

原创 Leetcode——530. 二叉搜索樹的最小絕對差

對於二叉搜索樹,中序遍歷得到的結果就是一個遞增的數列 /** * Definition for a binary tree node. * struct TreeNode { * int val; * T

原创 Leetcode——572. 另一個樹的子樹

題目傳送門 思路:遞歸 c++ /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *lef

原创 Leetcode——107. 二叉樹的層次遍歷 II

思路: 1.遞歸 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; *

原创 Leetcode——445. 兩數相加 II

思路:利用棧來解決鏈表反轉 簡潔版 class Solution { public: ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { stack

原创 Leetcode——820. 單詞的壓縮編碼

題目傳送門 思路一:暴力,將字符串按字符個數從大到小排列,然後判斷後續字符串是否是匹配字符串的子串。 class Solution { public: int minimumLengthEncoding(vector<st

原创 Leetcode——912. 排序數組

題目傳送門 介紹兩種方法,第一種就是直接調庫,第二種是希爾排序。 class Solution { public: vector<int> sortArray(vector<int>& nums) {

原创 Leetcode——914. 卡牌分組

題目傳送門 本題思路就是將出現的數字存在unordered_set裏面,因爲無序集合是hash實現比較快。然後遍歷集合,求公因數(在algorithm裏面有函數__gcd(a,b))。如果公因數小於2即爲1說明不存在解,即時返回錯

原创 Leetcode——面試題 17.16. 按摩師

思路:動態規劃。 class Solution { public: int massage(vector<int>& nums) { int length=nums.size();

原创 Leetcode——面試題40. 最小的k個數

用優先級隊列來模擬一個k個元素的大根堆。 class Solution { public: vector<int> getLeastNumbers(vector<int>& arr, int k) {

原创 Leetcode——892. 三維形體的表面積

主要說一下怎麼理解減去重合的面積:兩個長方體相鄰,其實要減去的重合面積就是二者高度的最小值*2.可以想象一下。代碼有優化空間,比如說兩個循環可以合併,但是我感覺這樣可讀性差一些,所以沒有優化。 class Solution {

原创 priority_queue 大/小根堆互換

c++的priority_queue相當於一個大(小)根堆。 priority_queue默認是大根堆,即top元素對隊列中最大的元素。那麼怎麼將其變成小根堆呢?下面以int類型爲例子。 priority_queue<int,ve