原创 Leetcode-399 除法求值

Floyed 學習題解 問題本質爲想要根據a/b=2,b/c=3導出a/c=6 將values中的權重關係轉化爲圖的邊,即爲鄰接矩陣的對應值。 Floyed算法:通過使用每一個點爲中轉點,能夠找到圖上任意兩點的最短路徑。 本題使

原创 Leetcode-10 正則表達式匹配

動態規劃 題解學習 dp[i][j]表示s前i個字符能否被p的前j個字符所匹配。 對於s的第i個字符和p的第j個字符,有三種情況: 1.s[i]==p[j],表示這個字符接上了,dp取決於上一個的結果,故dp[i+1][j+1]

原创 Leetcode-72 編輯距離

動態規劃 dp[i][j]表示word1的前i個字符傳換成word2的前j個字符所需的最少操作數。 1.在word1和word2前添#,便於初始化。 2.if(word1[i]==word2[j])):新添的一位並沒有影響,不需

原创 【3月打卡】Leetcode-409 最長迴文串

能構成的最長迴文串長度=出現偶數次字符的個數+(有出現奇數次的字符?1:0) 通過比較偶數次字符的長度和整個串的長度,來分析是否有出現奇數次的字符。 在遍歷過程中,每出現一對,cnt++,遇見兩個a出現2時,cnt++,再次遇見

原创 Leetcode-983 最低票價

以遊玩結束再給票錢來思考,第7天付1~7天的周票 動態規劃:dp[i]表示旅行到day[i]天所需要的最低票價 始終考慮:min(日票,周票,月票) 初始化:dp[0]=min(costs[0],min(costs[1],cos

原创 Leetcode-572 另一個樹的子樹

官方題解的KMP和哈希讓我瑟瑟發抖,卑微寫下遞歸,我還是覺得遞歸比較香。QAQ 雙重遞歸 isSubtree判斷是否爲子樹:三種情況,兩棵樹相同,大樹的左子樹包含小樹,大樹的右子樹包含小樹 isSametree判斷兩棵樹是否

原创 Leetcode-155 最小棧

輔助棧 stk:正常的棧 stkwithMin:棧頂爲目前棧中最小的元素,下一個元素爲棧頂元素,兩者同進同出,與stk棧保持同步。 class MinStack { public: /** initialize you

原创 Leetcode-207 課程表

先構建鄰接矩陣,再判斷拓撲排序,但是超時了的我爆哭 拓撲排序判斷圖是否有環 從圖中找到一個沒有前驅(入度爲0)的點 將從這個點出發的邊全部刪去 重複步驟1 2 ,如果所有點都遍歷過就無環。 class Solution { p

原创 Leetcode-297 二叉樹的序列化與反序列化

這絕對是最讓我抓狂的類型題,明明思路只是層次遍歷,但是字符串什麼的卻很難處理。 字符串函數學習 s.substr(位置n,長度len); 從s[n]開始截取len長度的字符串 s.find(string s1,int a);

原创 Leetcode-437 路徑總和 III

錯誤版本 將以該點左右孩子爲起點的尋找和以該點爲起點的尋找混合在一起,會導致同一個結點被多次遍歷。 class Solution { public: int num=0; int pathSum(TreeNod

原创 Leetcode-309 最佳買賣股票時機含冷凍期

笨拙的二維數組dp解法 dp[i][j]表示選擇第i天買入,第j天賣出能獲得的最大收益。 這裏的最大收益由兩部分構成:分別是prices[j]-prices[i]以及從第0天到第i-2天之間所獲得的最大收益。 class So

原创 Leetcode-448 找到所有數組中消失的數字

原思路 將輸入數字res初始化爲[1,2,3,…n]; 遍歷nums,如果發現相同該數字,即把該數字歸爲0. 以[4,3,2,7,8,2,3,1]爲例,res爲[0,0,0,0,5,6,0,0] 但是對於不使用新數組刪去res的元

原创 Leetcode-312 戳氣球

暴力 氣球總會被戳爆的,因此暴力上理解是氣球被戳爆的序號排列組合,哪個順序能獲得最大值?【並不能提供幫助的想法,因爲複雜度是O(N!) 區間類型的DP——小區間拼成所求區間 感謝題解和評論。 由於氣球戳爆後,會影響其他氣球的

原创 Leetcode-45 跳躍遊戲

貪心 由局部最優導出全局最優。 對於該點能跳到的所有點loc+1~nums[loc],考慮跳到之後還能跳多遠k+nums[loc+k],哪個點最遠就跳到哪。 class Solution { public: int j

原创 Leetcode-301 刪除無效的括號

感謝題解,代碼是相似的,寫一點自己的理解。 刪除的最少的左右括號數量可以通過一次遍歷確定,即得到lf,rt。 dfs(s,0,lf,rt)開始搜索 如果lf=0,rt=0證明刪除的數目正確,繼續驗證是否爲合法串,合法則加入結果集