- 博客(19)
- 收藏
- 关注
原创 动态规划学习笔记(来自:labuladong的算法小抄)
1. 动态规划一般形式:求最值2. 核心问题:穷举3. 三要素:重叠⼦问题:需要「备忘录」 或者「DP table」 来优化穷举过程, 避免不必要的计算最优⼦结构:子问题相互独立,可通过子问题最值得到原问题最值状态转移⽅程(最困难):思考方法:明确「状态」 -> 定义 dp 数组/函数的含义 -> 明确「选择」 -> 明确 base case4. 经典问题:斐波那契数列问题(重叠子问题)递归形式如下:int fib(int N) {if (N == 1 || N =
2020-12-08 21:12:30 611
原创 LeetCode:1382. 将二叉搜索树变平衡(C++带详细注释)
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: vector<int>mid;//存中序序列
2020-10-16 15:47:06 306
原创 Leetcode;200. 岛屿数量(DFS+BFS算法 C++带详细注释)
Leetcode;200. 岛屿数量(DFS算法 C++带详细注释)class Solution {public:// void dfs(vector<vector<char>>& grid,int i, int j)//DFS遍历函数// { int row=grid.size();//矩阵行数// int col=grid[0].size();//矩阵列数// if(i<0||i>=row||j&
2020-10-12 15:12:38 352
原创 LeetCode:94. 二叉树的中序遍历(递归和迭代两种方法)
LeetCode:94. 二叉树的中序遍历(递归和迭代两种方法)/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), lef
2020-10-12 09:29:43 156
原创 LeetCode:445. 两数相加 II(C++带详细注释)
LeetCode:445. 两数相加 II(C++带详细注释)/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* addTwoNumbers(ListNode* l1
2020-10-12 09:25:34 138
原创 LeetCode:1484. 克隆含随机指针的二叉树(方法1:hash_map+DFS 方法2:两次DFS ,C++带详细注释)
LeetCode:1484. 克隆含随机指针的二叉树(方法1:hash_map+DFS 方法2:两次DFS, C++带详细注释)/** * Definition for a binary tree node. * struct Node { * int val; * Node *left; * Node *right; * Node *random; * Node() : val(0), left(nullptr), right(nullptr), r
2020-10-12 09:22:27 223
原创 LeetCode:199. 二叉树的右视图(C++带详细注释)
LeetCode:199. 二叉树的右视图(C++带详细注释)/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:
2020-10-12 09:18:34 226
原创 LeetCode:面试题 02.05. 链表求和(C++带详细注释)
LeetCode:面试题 02.05. 链表求和(C++带详细注释)/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* addTwoNumbers(ListNode*
2020-10-12 09:15:31 179
原创 LeetCode:145. 二叉树的后序遍历(迭代和递归方法,C++带详细注释)
LeetCode:145. 二叉树的后序遍历(迭代和递归方法,C++带详细注释)/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val
2020-10-12 09:06:00 91
原创 LeetCode:143. 重排链表(C++带详细注释)
LeetCode:143. 重排链表(C++带详细注释)/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNod
2020-10-11 16:33:44 293
原创 LeetCode:142. 环形链表 II(哈希表和快慢指针(龟兔赛跑)法 C++带详细注释)
LeetCode:142. 环形链表 II(哈希表和快慢指针(龟兔赛跑)法 C++带详细注释)/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode *detectCycl
2020-10-11 16:31:12 159
原创 LeetCode:98. 验证二叉搜索树(C++带详细注释)
LeetCode:98. 验证二叉搜索树(C++带详细注释)/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:vect
2020-10-11 16:23:22 171
原创 LeetCode:92. 反转链表 II(C++带详细注释)
LeetCode:92. 反转链表 II(C++带详细注释)/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* reverseBetween(ListNode* he
2020-10-11 16:20:00 205
原创 LeetCode:18. 四数之和(C++带详细注释)
LeetCode:18. 四数之和(C++带详细注释)class Solution {public: vector<vector<int>> fourSum(vector<int>& nums, int target) { vector<vector<int>>res;//预定义结果数组 int len=nums.size();//获取数组长度; sort(nums.begin()
2020-10-11 16:17:58 406
原创 Leetcode:2. 两数相加(C++带详细注释)
Leetcode:2. 两数相加(C++带详细注释)/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode
2020-10-11 16:15:01 391
原创 Leetcode:25. K 个一组翻转链表(C++带详细注释)
Leetcode:25. K 个一组翻转链表(C++带详细注释)/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, Lis
2020-10-11 16:09:19 197
原创 Leetcode:23. 合并K个升序链表 (C++带详细注释)
Leetcode:23. 合并K个升序链表 (C++带详细注释)/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, Lis
2020-10-11 16:03:51 396
原创 Leetcodde:1371. 每个元音包含偶数次的最长子字符串,C++带详细注释
Leetcodde:1371. 每个元音包含偶数次的最长子字符串,C++带详细注释class Solution {public: int findTheLongestSubstring(string s) { vector<int>pos(32,INT_MAX);//32个状态(0-31),数组值记录每个状态出现的位置 int ans=0;//最大子串长度 int status=0;//状态值0-31(5位二进制)1为奇0为偶
2020-10-11 15:57:50 236 1
原创 leetcode 面试题16.18.模式匹配:复现双百算法(分类别讨论),C++带详细注解
leetcode 面试题16.18.模式匹配:复现双百算法(分类别讨论),C++带详细注解分成5类讨论,定义了两个辅助函数:class Solution {public:bool kSegment(string value,int k)//判断value能否被分成k个一样的字串{ int len=value.size();//求value长度 if(len%k!=0) return false;//长度不是k的整数倍,不能 int m=len/k;//求k等分后每个字符串的
2020-10-11 15:47:44 225 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人