算法
长胖了的辣条
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
快速排序模板
// 快排 class Solution { public void quickSort(int[] arr, int l, int r){ //递归出口 if(l<r){ int m = partition(arr, l, r); //排序 quickSort(arr, l, m-1); quickSort(arr, m+1, r); } } publ原创 2022-02-11 11:44:07 · 738 阅读 · 0 评论 -
并查集模板
并查集介绍 力扣1 力扣2 初始化,每个元素根节点指向自己 int fa[MAXN]; inline void init(int n) { for (int i = 1; i <= n; ++i) fa[i] = i; } 查找根节点 int find(int x) { if(fa[x] == x) return x; else fa[x] = find(fa[x]); return fa[x]; } 两个集合原创 2022-02-06 20:49:42 · 471 阅读 · 0 评论 -
dfs,bfs模板
使用dfs,bfs时都可以结合树状图去解题 dfs dfs模板如下: void backtracking(参数) { if (终止条件) { 存放结果; return; } for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) { 处理节点; backtracking(路径,选择列表); // 递归 回溯,撤销处理结果 } } bfs bfs使用队列,和层次遍历类似,因为是一层原创 2022-01-29 21:14:33 · 651 阅读 · 0 评论 -
01背包的一些要点
1。二维数组写法 对于背包问题,有一种写法, 是使用二维数组,即dp[i][j] 表示从下标为[0-i]的物品里任意取,放进容量为j的背包,价值总和最大是多少。 那么可以有两个方向推出来dp[i][j]: 不放物品i:由dp[i - 1][j]推出,即背包容量为j,里面不放物品i的最大价值,此时dp[i][j]就是dp[i - 1][j]。(其实就是当物品i的重量大于背包j的重量时,物品i无法放进背包中,所以被背包内的价值依然和前面相同。) 放物品i:由dp[i - 1][j - weight[i]]推.原创 2021-11-20 15:51:54 · 398 阅读 · 0 评论 -
回溯去重总结
1.不用数组 力扣:40. 组合总和 II class Solution { List<List<Integer>> lists = new ArrayList(); List<Integer> list = new ArrayList(); int sum = 0; public List<List<Integer>> combinationSum2(int[] candidates, int target) {原创 2021-11-11 11:18:00 · 4167 阅读 · 0 评论 -
c++ unordered_map的访问效率
unordered_map是C++ Boost库中的内容,这里的unordered翻译成“无序”。但它并不是完全的“无序”的概念,而是散列式的存储方式。 unordered库提供了两个散列映射类,unordered_map和unordered_multimap。 它们用散列表代替了二叉树的实现,模板参数多了散列计算函数,比较谓词使用equal_to<>。 看到这里,我们就应该明白,比起...转载 2020-02-12 17:06:08 · 2494 阅读 · 0 评论 -
KMP笔记
前缀表 首先是理解前缀表,前缀表是用来回退的,它记录了模式串与主串(文本串)不匹配的时候,模式串应该从哪里开始重新匹配。记录下标i之前(包括i)的字符串中的最大相同前后缀长度。 前后缀概念 前缀是指不包含最后一个字符的所有以第一个字符开头的连续子串;后缀是指不包含第一个字符的所有以最后一个字符结尾的连续子串。如 “aabaaf” 中,"aabaa"是最长前缀,"abaaf"是最长后缀。“a”的前后缀长度都为0。 前缀表计算方法 长度为前1个字符的子串a,最长相同前后缀的长度为0。 长度为前2个字符的子串转载 2021-08-29 16:06:05 · 153 阅读 · 0 评论 -
java中优先队列,TreeMap的一些总结
优先队列 PriorityQueue<int[]> queue = new PriorityQueue(new Comparator<int[]>(){ public int compare(int[] p1, int[] p2){ return p1[0]!=p2[0] ? p2[0]-p1[0] : p2[1]-p1[1]; //降序写法o2-o1, 小于时不改变顺序 } }); comparator 当方法的返回值大于0的时候就将原创 2021-10-12 16:05:32 · 547 阅读 · 0 评论
分享