原创 LeetCode 720. 詞典中最長的單詞 (字典樹的簡單應用)

詞典中最長的單詞 ① 首先把n的字符串插入字典樹 ② 然後依次查詢n的字符串是否滿足要求——它的每個字符都是某個字符串的結尾。 class Solution { string ans = ""; struct No

原创 LeetCode 1462. 課程安排 IV (偏序關係的傳遞閉包)

課程安排 IV 偏序關係傳遞閉包的入門題——給定m對偏序關係(有向邊),查詢兩個點是否有路徑可達。 class Solution { public: vector<bool> checkIfPrerequisite(int

原创 LeetCode 421. 數組中兩個數的最大異或值 (01Trie的入門題)

數組中兩個數的最大異或值 class Solution { public: vector<vector<int>> trie; int ans = 0,tot = 1; int findMaximumXOR

原创 UVA-10305Ordering Tasks ——拓補排序(DFS實現、隊列實現)

Ordering Tasks #include<stdio.h> #include<iostream> #include<cmath> #include<math.h> #include<string> #include<str

原创 LeetCode 785. 判斷二分圖 (圖論基礎之判斷二分圖)

判斷二分圖 class Solution { public: int vis[110] = {0},n,flag = 1; bool isBipartite(vector<vector<int>>& graph)

原创 LeetCode 1028. 從先序遍歷還原二叉樹(遞歸建樹、切割序列)

從先序遍歷還原二叉樹 做此題的思路和用 中序遍歷和前(後)序遍歷重建二叉樹的思路是非常一致的。 從序列中找出根節點、左子樹、右子樹——不斷切割序列,遞歸地向下建樹 ——而確定根節點和左右子樹根節點的依據就是深度。 時間複雜度:O(

原创 LeetCode 面試題 04.01. 節點間通路 (圖論基礎之DFS判斷兩點的連通性 )

節點間通路 class Solution { public: vector<int> G[(int)1e5+1]; int vis[(int)1e5+1] = {0}; int target; bo

原创 LeetCode 67. 二進制求和 (二進制數的模擬計算)

二進制求和 class Solution { public: string addBinary(string a, string b) { int len = max(a.size(),b.size());

原创 LeetCode 133. 克隆圖 (圖的遍歷、圖的指針存儲)

思路: ① 遍歷圖,記錄下所有的節點和邊。 ② 將數值與指針一一對應。 ③ 新建節點,並根據邊的關係把它的相連節點加進vector<Node*>。 class Solution { public: Node* nodeLi

原创 LeetCode 1042. 不鄰接植花 ( DFS回溯、一次遍歷)

不鄰接植花 我這種寫法, 實際上借鑑了判斷二分圖的做法。 class Solution { public: vector<int> ans; vector<int> graph[10010]; vector

原创 LeetCode 996. 正方形數組的數目 (回溯、結果去重、等價情況剪枝)

正方形數組的數目 思路: 回溯題基本寫法。 用multiset<int>去記錄數字的使用情況。 用set<vector<int>>去重。 剪枝:雖然數字可以重複使用(如果有的話),但是每一層的數字不應出現重複枚舉。 比如: 2

原创 1267. 統計參與通信的服務器 (深搜求連通塊)

統計參與通信的服務器 class Solution { public: int vis[260][260] = {0}; // vector<vector<int>> res; int m,n,ans=0;

原创 LeetCode 1387. 將整數按權重排序(記憶化、遞歸)

將整數按權重排序 迷之標籤、迷之測試數據 記錄一下中間的計算結果就行。 class Solution { public: unordered_map<int,int> vis; struct Node{

原创 LeetCode 166. 分數到小數(數學、模擬、細節)

分數到小數 先說說幾種可能出錯的情況。 0/x 直接輸出0,沒有正負號 有負號的情況 如果是整除,沒有小數點 卡int的邊界問題,所以乾脆直接開long long 分析: 大致有兩種情況,整除和出現循環。 於是模擬一下除法的進

原创 LeetCode 98. 驗證二叉搜索樹 (二叉搜索樹中序遍歷的性質、遞歸)

驗證二叉搜索樹 利用中序遍歷的性質(中序即升序)。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * Tre