算法
文章平均质量分 84
若明天不见
时白发未生,轻狂尚有
展开
-
深入理解 LFU 缓存算法:原理、应用与优化
本文内容包括LFU原理、实现及局部性场景。LFU(Least Frequently Used)算法是一种缓存淘汰策略,它根据数据被访问的频率来淘汰数据。LFU算法的核心思想是:如果数据被访问的频率较低,那么它在未来被访问的可能性也较低,因此可以优先考虑淘汰这些数据。原创 2024-06-11 14:33:14 · 397 阅读 · 0 评论 -
跳表:高效索引的神奇算法
本文主要介绍跳表的基本原理、特点及实现细节,包括随机性选层、插入、删除和查找的技术细节,和Java实现源码原创 2024-04-22 10:15:49 · 806 阅读 · 0 评论 -
深入理解LRU缓存算法:原理、应用与优化
本文内容包括LRU原理、实现及局部性场景。LRU算法(Least Recently Used,最近最少使用算法)的思想是基于"时间局部性"原理,即在一段时间内,被访问过的数据在未来仍然会被频繁访问的概率较高。原创 2024-04-09 10:12:55 · 1395 阅读 · 0 评论 -
Leetcode 动态规划详解
本文主要介绍动态规划的核心思想、解题步骤及Leetcode真题详解。动态规划(Dynamic Programming, DP)是一种解决多阶段决策过程最优化问题的数学方法。动态规划的特点是将原问题分解成多个子问题进行求解,每个子问题只求解一次,并将其结果保存下来,避免重复计算。然后通过组合子问题的解来得到原问题的解。原创 2023-07-22 15:05:01 · 336 阅读 · 0 评论 -
Leetcode 二叉树详解
本文介绍二叉树的概念、基础知识及对应的Leetcode真题详解树的概念及基本术语见定义:一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根结点加上两棵分别称为左子树和右子树的、互不相交的二叉树组成。特点:每个结点至多只有两棵子树原创 2023-05-21 16:30:00 · 641 阅读 · 0 评论 -
分治法、回溯法与动态规划
本文主要介绍分治法、回溯法与动态规划的算法思想及其对比。- 回溯法:有“通用解题法”之称,用它可以系统地搜索问题的所有解。回溯法是按照深度优先搜索(DFS)的策略,从根结点出发深度探索解空间树- 分治法:将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。步骤为分解、处理和解合并- 动态规划:与分治法类似,将问题分解为子问题,但会找出最优子结构以避免大量重复计算,最后构造最优解原创 2023-08-05 22:11:52 · 299 阅读 · 0 评论 -
BloomFilter 布隆过滤器
本文主要介绍布隆过滤器BloomFilter的定义、原理及应用定义: 空间效率高的概率型数据结构,用来检查一个元素是否在一个集合中原理:当一个元素被加入集合时,通过K个散列函数将这个元素映射成一个位数组中的K个点,把它们置为1。检索时,我们只要看看这些点是不是都是1就大约知道集合中有没有它了。使用场景:可用于解决网页 URL 去重、垃圾邮件识别、大集合中重复元素的判断和缓存穿透等问题布隆过滤器存储空间和插入/查询时间都是常数O(k)原创 2022-09-29 21:14:45 · 693 阅读 · 0 评论 -
八大排序算法总结
(此文章源代码及更多数据结构的代码都在git)排序有内部排序和外部排序之分,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说的八大排序算法均为内部排序。原创 2016-05-23 15:38:17 · 857 阅读 · 0 评论 -
动态规划的基本思想与例子解析
经分解得到的子问题有时候往往不是互相独立的。不同子问题的数目常常只有多项式量级。在用分治法求解时,有些子问题被重复计算了许多次。 Those who cannot remember the pastare doomed to repeat it. ——George Santayana (不取前车之鉴,必将重蹈覆辙。)原创 2016-07-06 14:06:13 · 3120 阅读 · 0 评论 -
最大公约数问题的优化解法
写一个程序,求两个正整数的最大公约数(Greatest Common Divisor,GCD)。如果两个整数都很大,有什么简单的算法吗? (问题及思路来自于《编程之美》2.7节)1. 辗转相除法用辗转相除法确定两个正整数 a 和 b(a≥b) 的最大公因数gcd(a,b):当a mod b=0 时gcd(a,b)=b,否则gcd(a,b) = gcd(b,原创 2016-07-23 15:20:22 · 1389 阅读 · 0 评论 -
回溯法的解题步骤与例子解析
回溯法有“通用解题法”之称。用它可以系统地搜索问题的所有解。回溯法是一个既带有系统性又带有跳跃性的搜索算法。 在包含问题的所有解的解空间树中,按照深度优先搜索的策略,从根结点出发深度探索解空间树。当探索到某一结点时,要先判断该结点是否包含问题的解,如果包含,就从该结点出发继续探索下去,如果该结点不包含问题的解,则逐层向其祖先结点回溯。(其实回溯法就是对隐式图的深度优先搜索算法)。若原创 2016-06-19 18:28:31 · 18668 阅读 · 1 评论 -
分治法的基本思想与例子解析
分治法的设计思想:将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。 凡治众如治寡,分数是也。——孙子兵法1. 基本思想(1) 将求解的较大规模的问题分割成k个更小规模的子问题。(2) 对这k个子问题分别求解。如果子问题的规模仍然不够小,则再划分为k个子问题,如此递归的进行下去,直到问题规模足够小,很容易求出其解原创 2016-06-24 21:56:38 · 29762 阅读 · 1 评论 -
七大查找算法
阅读目录1. 顺序查找2. 二分查找3. 插值查找4. 斐波那契查找5. 树表查找6. 分块查找7. 哈希查找查找是在大量的信息中寻找一个特定的信息元素,在计算机应用中,查找是常用的基本运算,例如编译程序中符号表的查找。本文简单概括性的介绍了常见的七种查找算法,说是七种,其实二分查找、插值查找以及斐波那契查找都可以归为一类——插值查找。插值查找和斐波那契查找是在二分查找的基础上的优化查找算法。树表查找和哈希查找会在后续的博文中进行详细介绍。 查找定义:根据给定的某个值,在查找表中确定一转载 2016-05-02 12:25:37 · 2003 阅读 · 0 评论