Pure Soul

算法
未分类

Maximum Manhattan Distance of Two Points in Points Set

Manhattan Distance Definition: The Manhattan distance between two points (x_1, y_1) and (x_2, y_2) in a 2D plane is defined as dis = |x_1 - x_2| + |y_1 - y_2|, where | \cdot | denotes the absolute value. Problem Definition Given a set of points {p_1, p_2, \ldo…

2024年4月1日 0条评论 2425点热度 0人点赞 ycq 阅读全文
Golang

雪花算法及Golang实现

雪花算法能解决什么问题? 雪花算法能够生成全局唯一的ID编码作为其他地方的标记。且生成一系列的ID满足如下的性质: 生成的系列ID是递增的 高可用性:任何时候都能够生成唯一的ID 再高并发的条件下也能够保证服务 SnowFlake的组成 最高位是符号位,始终为0 41位的时间戳,精度位毫秒级,可使用69年 10位的机器码,支持1024个节点 12位的id,每毫秒可以生成4096个id 12位的计数序列号,自增。同一节点,同一毫秒最多产生4096个序号 SnowFlake的golang实现 package snow …

2022年1月2日 0条评论 1583点热度 0人点赞 ycq 阅读全文
Golang

温故而知新 - 图

图 简单来说,图是由一组点和相对应边组成的,可以表示为G=<V,E>,V为Vertex(点集),E为Edge(边集)。细分下来根据点集之间的对等关系又可以分为,有向图(又可分为带权和无权有向图),无向图,混合图。图中点包含的另外一个的重要信息就是各自的出度(outdeg)和入度(indeg),表示了以该点作为出边和入边的个数。 图的复杂度 对于无向图而言,所有点的度之和为sum(deg)=2*|E|,度之和为边的数目的两倍。对于有向图而言,所有点的入度之和自然等于出度之和,也会等于边的数目,毕竟每一条边存在源…

2022年1月1日 0条评论 750点热度 0人点赞 ycq 阅读全文
Golang

Rabin Karp-字符串匹配算法

字符串匹配算法 匹配的目的就是给定两个字符串,s 和 pattern, pattern是要查找的字符串,s是被查找的文本,要求找到pattern在s中第一次出现的位置,假定pattern为 acd, s为acfgacdem, 那么s在t中第一次出现的位置就是4。常见的匹配算法有以下几种: 算法 预处理时间 匹配时间 暴力匹配 $O(n)$ $O((n-m+1)*m)$ Rabin Karp $O(m)$ $O((n-m+1)*m)$ Finite automaton $O(m| \sum |)$…

2021年12月23日 0条评论 1106点热度 0人点赞 ycq 阅读全文
Golang

大数据系统设计题(简易版本)

大数据设计 面试中设计的大数据设计题的场景通常不会太复杂,因此不需要给出细致的操作,给出大致的思路即可。但是有时候依旧考虑的不全面 :disappointed_relieved: :disappointed_relieved: :disappointed_relieved:借此机会记录下来巩固自己这方面的知识。 数据流采样 这是一个经典的采样问题,如果之前没见过一时半会想不出来解决办法。基本场景如下: 有一个无限的整数数据流,如何从中随机地抽取k个整数出来?使得每一个数被抽中的概率相同。 现实场景可以描述为:现有一…

2021年12月17日 0条评论 1156点热度 0人点赞 ycq 阅读全文
算法

极角排序

前言 感谢LeetCode让我又接触到了一个知识:sleeping: 极角排序 高中学习的极角,指的是极坐标系中的一个点相对极点有唯一的极坐标(\rho, \theta),其中\rho表示选定点到极点的距离,\theta表示选定点和极轴逆时针的夹角,且0 \leq \theta \leq 2\pi。 极角排序方法一 直接通过反三角计算极角,我们知道极坐标和直角坐标转换公式中有\tan \theta=\frac{y}{x} ,所以可以用 arctan(\frac{y}{x})来计算。然而,arctan(\frac{y…

2021年12月16日 0条评论 1757点热度 0人点赞 ycq 阅读全文
数据结构/图论

红黑树-旋转的艺术

红黑树的定义和性质 红黑树的出现之前,先有的二叉查找树(BST)以及平衡二叉树(AVL树): BST根节点的值大于所有左子树的所有值,小于右子树的所有值。 AVL树是最早被发明的自平衡二叉查找树。在AVL树中,任一节点对应的两棵子树的高度差为小于等于1。 AVL的出现改变了BST可能退化为单链表的缺点,AVL在查找时候的性能取决于树的高度,但是在插入和删除的时候性能不如人意。进而发展出了红黑树这一数据结构,因此红黑树是一种特化的AVL树。 红黑树具有五条基本的性质: 根节点是黑色的 Null叶子节点是黑色的 节点只…

2021年12月15日 0条评论 1252点热度 0人点赞 ycq 阅读全文
算法

摩尔投票

摩尔投票是什么? 摩尔投票用于寻找集合中出现多数的元素,并且出现多数可以定义为大于n//2或者n//3或者是其他自定义的频次(实际上,如果希望求出超过n//3频次的元素,那么是三个元素相互抵消)。摩尔投票的基本流程为: - 投票阶段:投票人之间进行抵消。 - 技术阶段:计算对抗结果中最后剩下的候选人票数是否有效。 投票环节 设置候选人candidate以及候选人的票数统计count的两个变量,每次遍历到一个元素的时候对当前候选人的票数进行抵消操作,当票数抵消到0时,选取新的候选人。伪代码如下: candidate,…

2021年10月22日 0条评论 1437点热度 0人点赞 ycq 阅读全文
算法

Tensorforce两三语

前言 关于tensorforce的背景可以从他的名字看出来,tensor*必然是师从tensorflow框架的,事实上也确实是由tensorflow框架来的。使用tensorforce可以快速的构建强化学习代码,同时还可以利用其中现有的强化学习框架,例如常见的AC,A2C,A3C,PPO等。并且可以很好地结合OpenAIGym等主流开源环境和框架。 tensorforce的要点 tensorforce的要点,或者说强化学习的要点大致可以分为两大部分,一是环境(Environment),二是代理(Agent)。 En…

2020年10月30日 0条评论 1548点热度 1人点赞 ycq 阅读全文
算法

列表推导式和[]*N的区别

列表推导式是常见的生成方式,同时[]*N也是快速生成多种元素的快捷方式。 例如以下两种生成方式: a=[[0]*5]*5 b=[[0 for _ in range(5)] for _ in range(5)] 生成的初始矩阵都是5*5的0矩阵: [ [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0] ] 但是真正对其中的元素进行赋值之后就会发现问题: a[0][0]=2 b[0][0]=2 # a的输…

2020年10月19日 0条评论 1674点热度 2人点赞 ycq 阅读全文
12

COPYRIGHT © 2021 oo2ee.com. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS