![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
爱吃煎饺的LinV
临渊慕鱼?退而结网!
展开
-
前缀树问题
前缀树问题判别前缀树问题一般性质:多个字符串存在共同前缀,该共同前缀对结果有影响。前缀树通用解决方案:class Trie{public: Trie() { isEnd = false; memset(next, 0, sizeof(next)); } void insert(string word) { auto node = this; for(auto w : word) { if(原创 2021-01-17 19:23:45 · 112 阅读 · 0 评论 -
笛卡尔乘积问题
笛卡尔乘积问题的判别笛卡尔问题的一个特点是有很多个种类的子结果的拼接。目前遇到的只是字符串的拼接。通用解决思路分步求解结果,最后拼接;例题Leetcode 816.模糊坐标class Solution {public: vector<string> addSymbol(string s) { vector<string> res; int length = s.length(); for(int i = 1;原创 2021-01-16 15:33:55 · 598 阅读 · 0 评论 -
图着色问题
图着色问题的判别根据目前所做的题目,图着色问题有一个显著的特点,就是将图中的节点分成几组。解决思路对图深度优先遍历(或广度优先遍历)的过程中,进行节点着色。不同的题有不同的着色策略,这里不再详述。大致可根据分成的组的数目,设置颜色的数量。根据输入信息,生成邻接矩阵。深度优先遍历邻接矩阵,并着色。例题Leetcode 785.判断二分图class Solution {public: bool dfs(const vector<vector<int>>&am原创 2021-01-15 18:49:21 · 263 阅读 · 0 评论 -
目标和问题
目标和问题的判别目标和通常会给定一个数组,通过某种求和方式求解得到目标和。对于目标和的求解一般需要进行数学转换。通用解决思路添加“+”、“-”号时,可转化成0-1背包问题;减余偶数理论。设1,2,3,...,k相加求和为sum且sum是大于target的最小数,delta = (sum - target);如果delta是偶数,若1,2,3,...,k存在相加求和等于delta/2的子集,sum - delta = target,则结果便是k;如果delta不是偶数,那么(sum + k原创 2021-01-14 10:32:58 · 219 阅读 · 0 评论