题目来源:leetcode77 组合 题目描述: 给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。 示例: 输入: n = 4, k = 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ] 解题思路: 回溯 class ...
分类:
其他好文 时间:
2020-07-08 20:15:32
阅读次数:
60
目录 二分查找 排序的写法 BFS的写法 DFS的写法 回溯法 树 递归 迭代 前序遍历 中序遍历 后序遍历 构建完全二叉树 并查集 前缀树 图遍历 Dijkstra算法 Floyd-Warshall算法 Bellman-Ford算法 最小生成树 Kruskal算法 Prim算法 拓扑排序 查找子字 ...
分类:
其他好文 时间:
2020-07-07 18:08:11
阅读次数:
74
给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。 返回 s 所有可能的分割方案。 示例: 输入: "aab"输出:[ ["aa","b"], ["a","a","b"]] 链接:https://leetcode-cn.com/problems/palindrome-partitio ...
分类:
其他好文 时间:
2020-07-07 13:26:07
阅读次数:
67
class Solution { public: bool makesquare(vector<int>& nums) { int l=nums.size(); int sum=0; for(int i=0;i<l;i++) { sum+=nums[i]; } if(sum==0 || (sum/4 ...
分类:
其他好文 时间:
2020-07-06 16:11:42
阅读次数:
36
##1. 模式 ###1.0 回溯 贪婪模式和懒惰模式都会进行回溯; 匹配两次相关的字符时,匹配到不符合要求的字符后,这个字符才算匹配完,然后继续匹配下一个字符; 比如:xy{1,3}z 样本:xyyyz 在匹配该样本时,无论贪婪模式还是懒惰模式,都需要匹配到z后才能知道y字符匹配完成,才会继续匹配 ...
分类:
其他好文 时间:
2020-07-05 21:18:42
阅读次数:
52
算法核心思想: 利用已经部分配对的有效信息,让主串i指针不回溯,通过每次确定子串j指针的回溯位置,使得子串(模式串)重新匹配时尽量移动到最佳位置,以减少不必要的回溯。 int* GetNext(char Str[]) { int* Next = (int*)malloc(sizeof(int) * ...
分类:
编程语言 时间:
2020-07-05 19:36:49
阅读次数:
74
1.回溯法 回溯法的基础题目类型就是子集树和排列树,掌握最基础的模板,那么其它的题目都可以在此上变形得到,子集树即如下图所示: 同一个元素不能被选入多次,子集树的算法模板为 1 void Backtrack(int t) { //t 表示当前是树的第t层,即对集合 S 中的第 t 个元素进行判断 2 ...
分类:
其他好文 时间:
2020-07-05 19:32:17
阅读次数:
72
DFS回溯,从左至右选数,加入一个一维数组oneCombination中,当oneCombination的大小等于k,表示已经选了k个数, 将oneCombination压入结果数组res中。 DFS的函数签名可以写为void DFS(int n, int k, int startPos, vect ...
分类:
其他好文 时间:
2020-07-05 00:51:21
阅读次数:
61
1 /*可以用回溯,但是我已经不太熟悉回溯了!!!!!!!!呜呜呜 2 * 3 */ 4 #include <iostream> 5 #include <math.h> 6 using namespace std; 7 /* 8 * 这个地方我确实没有想到 9 * 我不知道怎么判断两个符号的作用对象 ...
分类:
其他好文 时间:
2020-07-03 23:15:52
阅读次数:
77
先说明一下:本体正确解法使用BFS(广度优先),最下方的是关于BFS的思路 BFS与DFS最大的区别在于: BFS首先搞同一层,然后从同一层一个个出发,找下一层 DFS首先搞一个,一直搞到底,然后再搞下一个,也就是回溯 接下来,我首先分析一下,我的整个思路的分析~~ ==超时的个人思路:= 对于我个 ...
分类:
其他好文 时间:
2020-07-02 21:22:19
阅读次数:
67