随笔分类 -  算法

算法 - 三路快排(分为三部分 小于/等于/大于)
摘要:https://www.cnblogs.com/deng-tao/p/6536302.html 阅读全文

posted @ 2021-01-09 23:57 frank_cui 阅读(82) 评论(0) 推荐(0) 编辑

算法 - 前缀树Trie
摘要:leetcode官方解析(必看) https://leetcode-cn.com/problems/implement-trie-prefix-tree/solution/shi-xian-trie-qian-zhui-shu-by-leetcode/ Trie用处 Trie (发音为 "try") 阅读全文

posted @ 2021-01-06 15:24 frank_cui 阅读(204) 评论(0) 推荐(0) 编辑

算法 *-* 区间问题
摘要:总结 1.画图,画图,画图。直观观察规律 2.排序,排序,排序。按照起点/终点排序,或者混合排序。 int[][] points = new int[][]{{1,2},{1,4},{10,18},{7,11},{3,6}}; // 按照起点升序排列;起点相同时,终点按照降序排列 Arrays.so 阅读全文

posted @ 2020-12-30 01:34 frank_cui 阅读(122) 评论(0) 推荐(0) 编辑

算法 *-* 贪心算法Greedy
摘要:贪心 vs 动态规划 联系 都是一种推导算法 都是分解成子问题来求解,都需要具有最优子结构 区别 如果把所有的子问题看成一棵树的话: 贪心:贪心从根出发,每次向下寻找(原文:遍历)最优子树即可。通常这个“最优”都是基于当前情况下显而易见的“最优”,仅需看本节点的情况,不需要知道该节点的所有子树情况, 阅读全文

posted @ 2020-12-29 21:43 frank_cui 阅读(111) 评论(0) 推荐(0) 编辑

算法 *-* 滑动窗口Sliding Window (子串问题)
摘要:总结 模板 int left = 0, right = 0; while (right < s.size()) { // 增大窗口 window.add(s[right]); right++; while (window needs shrink) { // 缩小窗口 window.remove(s 阅读全文

posted @ 2020-12-25 00:51 frank_cui 阅读(107) 评论(0) 推荐(0) 编辑

算法 *-* 二分查找(三种情况, 统一模板)
摘要:1. 总结 binary_search:普通的二分搜索,就是搜索target本身的值 left_bound:搜索比target小的数字的个数。有序数组nums = [2,3,5,7],target = 1,算法会返回 0,含义是:nums中小于 1 的元素有 0 个;nums = [2,3,5,7] 阅读全文

posted @ 2020-12-24 00:08 frank_cui 阅读(126) 评论(0) 推荐(0) 编辑

算法 - 二叉树非递归
摘要:统一格式的非递归方法:https://zhuanlan.zhihu.com/p/81466547 但是貌似会超时 普通的非递归方法:https://www.cnblogs.com/dolphin0520/archive/2011/08/25/2153720.html 阅读全文

posted @ 2020-10-23 16:30 frank_cui 阅读(59) 评论(0) 推荐(0) 编辑

算法 *-* 回溯算法 (类似枚举的搜索过程,通解通法美称)
摘要:什么是回溯算法 对于回溯算法的定义,百度百科上是这样描述的:回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标 阅读全文

posted @ 2020-10-18 00:25 frank_cui 阅读(309) 评论(0) 推荐(0) 编辑

算法 *-* 拓扑排序 Topological Sort(解决有向图的依赖解析)
摘要:总结 拓扑排序主要用来解决有向图中的依赖解析(dependency resolution)问题。 本质:从入度为0的地点,开启BFS 举例来说,如果我们将一系列需要运行的任务构成一个有向图,图中的有向边则代表某一任务必须在另一个任务之前完成这一限制。那么运用拓扑排序,我们就能得到满足执行顺序限制条件 阅读全文

posted @ 2020-09-11 15:47 frank_cui 阅读(730) 评论(0) 推荐(0) 编辑

算法 *-* 并查集Union-Find(连通性)
摘要:总结 class UF { /* 将 p 和 q 连接 */ public void union(int p, int q); /* 判断 p 和 q 是否连通 */ public boolean connected(int p, int q); /* 返回图中有多少个连通分量 */ public 阅读全文

posted @ 2020-04-20 16:34 frank_cui 阅读(202) 评论(0) 推荐(0) 编辑

算法 *-* 动态规划
摘要:“动态规划”的出现形式 动态规划问题的一般形式就是求最值。动态规划其实是运筹学的一种最优化方法,只不过在计算机问题上应用比较多,比如说让你求最长递增子序列呀,最小编辑距离呀等等。 既然是要求最值,核心问题是什么呢?求解动态规划的核心问题是穷举。因为要求最值,肯定要把所有可行的答案穷举出来,然后在其中 阅读全文

posted @ 2019-10-14 22:18 frank_cui 阅读(212) 评论(0) 推荐(0) 编辑

算法 - 快速排序
摘要:1.算法解析 ref: https://blog.csdn.net/adusts/article/details/80882649 假设我们现在对“6 1 2 7 9 3 4 5 10 8”这个10个数进行排序。首先在这个序列中随便找一个数作为基准数(不要被这个名词吓到了,就是一个用来参照的数,待会 阅读全文

posted @ 2019-09-18 00:13 frank_cui 阅读(212) 评论(0) 推荐(0) 编辑

算法 - 十大排序算法
摘要:总结 算法分类 十种常见排序算法可以分为两大类: 比较类排序:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序 都属于比较排序。在排序的最终结果里,元素之间的次序依赖于它们之间的比较。每个数都必须和其他数进行比较,才能确定自己的位置。 优势:适用于各种规模的数据,也不在乎数据的分布 阅读全文

posted @ 2019-07-15 16:32 frank_cui 阅读(243) 评论(0) 推荐(0) 编辑

算法 - 摩尔投票算法
摘要:Boyer-Moore majority vote algorithm (摩尔投票算法) 典型案例: (1) 找出大于n/2的元素,leetcode: https://leetcode.com/problems/majority-element/ (2) 找出大于n/3的元素, letcode: h 阅读全文

posted @ 2019-03-04 23:56 frank_cui 阅读(843) 评论(0) 推荐(0) 编辑

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

导航

统计

levels of contents
点击右上角即可分享
微信分享提示