![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 85
烟草的香味.
这个作者很懒,什么都没留下…
展开
-
一种计数算法
常见的一个问题: 给定一个整形数组, 统计其中有多少唯一的元素.常见的思路有哪些呢?以上空间复杂度均与元素数量关联, 如果允许损失精度, 是否可以使用较低的空间占用来统计呢?但是, 我在看到了一种全新的思路. 尽管并不建议在生产环境中使用, 但仍不失为一种思路.原创 2024-01-21 16:40:13 · 542 阅读 · 1 评论 -
md5算法实现
md5算法原创 2023-10-23 23:33:26 · 495 阅读 · 0 评论 -
拜占庭将军问题
在分布式系统中交换信息, 部分成员可能出错导致发送了错误的信息原创 2023-01-02 18:22:44 · 634 阅读 · 0 评论 -
Gale-Shapley算法
前言最近看了一档综艺《心动的信号》(唉, 单身久了, 开始喜欢看别人谈恋爱了)节目中共有n男n女, 他们会在节目的最后进行表白, 如果我喜欢你, 恰好你也喜欢我, 那么便就会在一起, 自此传为一段佳话.于是, 我就在想, 如何用算法来实现这个匹配的过程呢?单一匹配将信息抽象化, 现有两个集合 M N, 每个集合中存在a个对象.结果集 R 中元素为 (m, n), 其中 m ∈ M, n ∈ N, m 喜欢 n, n 也喜欢 m.OK, 设计数据结果进行实现. (以下以Go进行简单演示)pac原创 2021-08-25 22:55:25 · 1271 阅读 · 1 评论 -
计算矩阵中全1子矩阵的个数
前言最近被我大哥安利了一道算法题, 这道题说难, 还不至于我做不出来, 说简单吧, 我还想不到最优解, 等把最优解告诉我之后, 我还正好能理解. 我甚至曾经怯怯的认为, 这题就是我哥专门给我找的, 嘿嘿, 心中说不出的小欢喜.题来了, 此题出自力扣, 原题链接:https://leetcode-cn.com/problems/count-submatrices-with-all-ones/描述: 给你一个只包含 0 和 1 的rows * columns矩阵mat,请你返回有多少个...原创 2020-07-11 00:28:58 · 2824 阅读 · 1 评论 -
长整数的乘法运算
概述都知道, 计算机中存储整数是存在着位数限制的, 所以如果需要计算100位的数字相乘, 因为编程本身是不支持存储这么大数字的, 所以就需要自己实现, 当然了, 各个编程语言都有大数的工具包, 何必重复造轮子, 但我还是忍不住好奇他们是如何实现的, 虽然最终没有翻到他们的底层源码去, 但查询的路上还是让我大吃一惊, 来吧, 跟我一起颠覆你的小学数学.长乘运算当然, 如果自己实现这样一个大数, 用数组来存储每一位是我当前想到的方法. 那如何进行乘法运算呢? 因为用数组来存储数字, 那么数字的加法也要采用原创 2020-06-20 18:28:44 · 1114 阅读 · 0 评论 -
数据压缩算法
概述之前在听到数据压缩的时候, 想着肯定是某些高深莫测的算法, 能够完成数据的压缩这种事情, 最近看了看, 嗯, 至少咱还是能看懂的.无损压缩众所周知, 不管你是exe,word,txt,dmg等等, 在存储上都是以二进制进行存储的, 所以, 在讨论压缩时, 忽略文件格式即可, 只要将其看做一串数字即可.方案一开始了, 上数字串:11111111111111111111.如果让你向别人口述这个字符串, 你会如何讲, "1111...1111". 我估计就算你这么讲, 人家听半...原创 2020-06-06 00:07:40 · 1620 阅读 · 0 评论 -
求最大连续子集
问题前两天看到一道算法题, 想了几天, 然后到网上搜了搜, 基本和我想到的相契合. 来, 题目如下:给出一个数组, 求出和最大的连续子集. 举个例子: 数组[1, 2, 3, 4, 5]那和最大的就是数组本身了.但是, 如果中间出现负数, 那情况立刻就不一样了, 你需要考虑是否能够将负数左边的内容包含进来, 从而令子集的和最大化.下面给出本人递进的思考思路.方案一暴力一点, 直接遍历所有情况. 暴力破解没什么好说的, 下面是 php 代码:$arr = []; // 一个数..原创 2020-05-29 23:54:12 · 868 阅读 · 0 评论 -
数字签名
概述还记得之前在介绍HTTPS的时候提到过的数字签名吗?忘了?? 来, 复习一下.揭开HTTPS的神秘面纱其中用到了非对称加密算法, 此算法分为公钥和私钥, 一个加密, 只能用另一个进行解密.第一次看到非对称加密算法的时候, 说实话我有些懵逼, 实在是想不到为何会有如此神奇的算法? 你就好比有一个函数, 通过 x, 能够计算得出 f(x), 但是根据 f(x), 算不出 x. 到这我还能够理解, 很多函数都存在多个解. 但是你又告诉我, 根据 f(x)和 n, 就能够算出 x??这么神奇的.原创 2020-05-23 01:12:59 · 264 阅读 · 0 评论 -
布隆过滤器
前言前两天, 一个大学同学问我布隆过滤器, 我本想反手甩他一篇我写的文章, 尴尬的是我找了找发现没有写过....无妨, 补上场景你在写一个全网资源的爬虫, 为了爬取全网的资源, 页面中所有的超链接你都要点击去访问一遍. 但是肯定会遇到这种情况, A页面持有B页面的链接, 同时B页面也持有A页面的链接, 你的爬虫会陷入无限循环中. 这个时候去重是必须的, 你需要知道一个url之前有没有访问过, 将访问过的url跳过, 防止重复访问. 问, 如何判断一个链接之前是否访问过.很简单, 存个集合原创 2020-05-16 19:04:30 · 82 阅读 · 0 评论 -
密钥交换算法: 迪菲-赫尔曼算法
概述迪菲-赫尔曼算法用于通信双方交换密钥. 还记得之前介绍HTTPS协议的时候, 提到需要先通过对方公钥来进行密钥的交换, 然后再通过密钥对通信内容进行加密. 迪菲-赫尔曼算法就是用于交换密钥的. . 此算法与非对称加密算法不同哦.OK, 一起来看看吧.引入在正式介绍迪菲-赫尔曼算法之前, 先简单跟我思考下面场景.现场有你, 小王和小李三个人, 你和小王之间需要建立一个共享密钥...原创 2020-05-03 22:12:39 · 983 阅读 · 0 评论 -
B+树
引言时隔一年,我又想起当初看数据库时,看到的B+树,就是数据库的索引使用的数据结构。再整理一下,看看自己没有忘记很多吧。概述B+树之前,先来看一下二叉查找树(1,2,3,4,5,6,7)恩, 差不多就长这样。诚然,在二叉查找树中查找某个元素是很快速的,二分查找嘛。但想想数据库查找数据的场景:select * from user where id > 10, 显然,对于...原创 2019-11-24 19:23:24 · 72 阅读 · 0 评论 -
Trie树
概述在Google中随意搜索,如下所示:他会自动显示相关的搜索,不知道有没有想过这个功能是如何实现的呢?面对海量的数据,它怎么能在我输入的同时,如此快速的检索到相关内容呢?当我查找资料后,就遇到了它,Trie树。What?Trie树是个什么玩意呢?为啥他能快速进行检索?Trie树也叫字典树。因为它的结构和我们用到的字典基本差不多。想想,你在字典中差“how”这个单词的动作是...原创 2019-11-10 16:47:33 · 85 阅读 · 0 评论 -
贪婪算法回顾
回顾还记的贪婪算法么? 如果你不记得了, 看了下面这个例子你一定会想起来, 因为这个例子太普遍了, 几乎每个将贪婪算法的地方, 第一个例子都是它, 言归正传.问题: 现在有如下课程表, 要将这些课尽可能多的安排在教室A内.课程名开始时间结束时间语文课9:0010:00数学课9:3010:30音乐课10:0011:00政治课10:3011...原创 2019-05-29 23:48:07 · 345 阅读 · 0 评论 -
哈希算法的用途
什么是哈希算法一说到哈希算法, 我瞬间就想到了哈希函数、哈希表, 其实他们并不是一回事.简单来说, 哈希算法就是将任意长度的字符串通过计算转换为固定长度的字符串, 不对, 不光字符串, 应该说是将任意长度的二进制串转换为固定长度的二进制串, 这个转换的过程就是哈希算法.既然将任意长度的字符串转换成固定长度的, 那么冲突就不可避免了, 比如将0-100所有的数字, 映射到0-10这十个数字上,...原创 2019-05-25 21:35:44 · 4149 阅读 · 0 评论 -
跳表
概述线性表中的链表是我们都很熟悉的结构了, 链表的增删优于数组, 但是不支持随机访问, 链表在查找时, 只能从头节点向后遍历, 那么针对链表, 能不能解决其访问效率的问题呢? 跳表来了, 顾名思义, 跳表就是可以跳跃的表, 我简单画了张图:在原来链表的基础上, 建立一个新的索引链表, 原链表没两个建立一个原来查找节点5的访问顺序是: 1->2->3->4->...原创 2019-05-14 22:40:22 · 129 阅读 · 0 评论 -
一致性哈希
分布式经典结构如图所示的结构, 当前端接收到请求时, 通过计算key的哈希值, 将哈希值模3, 然后分布到不同的后端服务器上但是, 这样的结构当添加或减少后端服务器时就暴露了问题, 每次添加或减少后端服务器, 放在服务器中的所有数据都要全部重新计算哈希, 将哈希值摸新的台数, 重新添加. 如此, 数据迁移的成本太高了, 由此引出了一致性哈希一致性哈希前端服务端结构不变, ...原创 2019-05-14 22:44:08 · 100 阅读 · 0 评论 -
散列表(哈希表)
概述什么是散列表? 如果说起它的另一个名字, 你一定很熟悉, 它的英文叫"Hash Table", 哈希表, 很熟悉吧.散列的思想, 其实就是利用数组的随机访问特性, 将key-value形式的数据, 其中的key转换成数组下标, 即可实现将其存放到数组中, 进而实现随机访问.而其中将key转换成数字的函数, 被称为散列函数, 或哈希函数.为了方便大家看, 以下统一称为哈希, 知道...原创 2019-05-19 21:40:00 · 115 阅读 · 0 评论