-
算法浅谈——人人皆知却很多人写不对的二分法
1 二分法可以说是鼎鼎大名,哪怕是没有学过编程的同学,也许说不上来二分法这个名字,但是对于其中的精髓应该都是有所了解的。不了解的同学也没关系,我一句话就能交代清楚:我们每次将一个集合一分为二,每次舍弃其中一半。 早在两千多年前,庄子就搞清楚了二分法的精髓,他说:一尺之棰,日取其半,万世不...
05月01日[游戏|数码]浏览:431
-
算法专题-手动实现循环队列
这次我就使用数组来实现静态队列了。值得注意的是:往往实现静态队列,我们都是做成循环队列。这道题也是我多次面试过程中遇到的,比如字节跳动和猿辅导,希望大家掌握。 为什么静态队列要做成循环队列呢?试想,底层依赖数组,如果不做成循环的,会非常浪费空间,那我们得申请多大的内存啊?既然做成循环的,首先我们...
04月27日[游戏|数码]浏览:466
-
化繁为简:推荐算法三视角
关于推荐系统,如果在忘掉所有的公式和代码,忘记所有的语言描述,脑海里就剩下几张图景,会是什么?一张二维表格,一个拓扑图,一条时间线。这三幅图景,是我看待推荐算法的三种视角。 视角一:矩阵视角 在脑中想象一个二维的表格,每一行代表一个用户,每一列代表一个物品,表格里的每一个点代表用户对物品的操作,这个...
04月22日[游戏|数码]浏览:491
-
超级简单的数据压缩算法—LZW算法
在字符串算法—数据压缩中,我们介绍了 赫夫曼树(Huffman)的构建和应用(编码、译码)哈夫曼压缩算法(Huffman compression), 本文将介绍 LZW算法 。 2. LZW算法 这个算法很简单,为了方便讲述,我们将采用16进制,写代码的时候在把它转回2进制就是了。 在16进制下:A...
04月20日[游戏|数码]浏览:285
-
Dijkstra算法详细(单源最短路径算法)
对于 dijkstra 算法,很多人可能感觉熟悉而又陌生,可能大部分人比较了解 bfs和dfs ,而对dijkstra和floyd算法可能知道大概是图论中的某个算法,但是可能不清楚其中的作用和原理,又或许,你曾经感觉它很难,那么,这个时候正适合你重新认识它。 Dijkstra能是干啥的? Dij...
04月19日[游戏|数码]浏览:344
-
信息摘要算法之MD5
MD5(Message-Digest Algorithm),想必大家都再熟悉不过了吧。通常我们调用第三方支付接口的时候都会遇到这种算法或者SHA等等类似的算法来做签名验证,由于其是不可逆的算法,对应破解难度也很大。 底层原理 MD5算法的过程分为四步:处理原文,设置初始值,循环加工,拼接结果。 处理...
04月18日[游戏|数码]浏览:492
-
安全散列算法SHA详解
SHA,即Security Hash Algorithm缩写,和MD5类似都是信息摘要算法,主要用于数字签名,网络支付,用户登录,密码校验等场景。 网上流传的SHA算法繁多,像SHA1,SHA224,SHA256等等,其实SHA就3个版本,SHA1,SHA2,SHA3,这其中SHA2又包含了SHA2...
04月18日[游戏|数码]浏览:393
-
决策树算法十问及经典面试问题
简介和 算法 决策树是机器学习最常用的算法之一,它将算法组织成一颗树的形式。其实这就是将平时所说的if-then语句构建成了树的形式。这个决策树主要包括三个部分:内部节点、叶节点和边。内部节点是划分的属性,边代表划分的条件,叶节点表示类别。构建决策树 就是一个递归的选择内部节点,计算划分条件...
04月18日[游戏|数码]浏览:431