算法
文章平均质量分 75
算法相关知识分享
BIT_666
天道酬勤,厚积薄发
展开
-
Python - Bert-VITS2 语音推理服务部署
Bert-VITS2 自定义语音推理服务部署。原创 2024-01-11 11:39:37 · 3638 阅读 · 7 评论 -
Python - 中文文本相似度计算与模糊匹配
Python 中文文本相似度计算与模糊匹配。原创 2023-12-27 08:00:00 · 5026 阅读 · 0 评论 -
Scala / Java - 采用 MD5 加盐 实现 id 均匀分组
大量 id 场景下经常需要通过 id 进行 AB Test,最常见的就是使用尾号 hash 进行分组,但是由于 id 生成规则以及其他因素,按照尾号分组往往会造成 id 不匀,从而导致 AB Test 效果受影响,所以下文采用 md5 加盐 Hash 的方式,得到更均匀的分组与 AB Test 效果。......原创 2022-08-05 09:50:25 · 920 阅读 · 2 评论 -
LeetCode / Scala - 无重复字符最长子串 ,最长回文子串
LeetCode 里有一类字符子串问题,这里主要分析无重复字符的最长子串与最长回文子串,总结相关方法。原创 2022-07-29 08:14:45 · 629 阅读 · 0 评论 -
LeetCode / Scala - 两数,三数,四数,N数之和
LeetCode 里分别有两数之和,三数之和,四数之和,主要实现方法为 Python,Java,C++,下面使用 scala 分别实现。原创 2022-07-26 08:39:34 · 655 阅读 · 0 评论 -
Scala - 数值型特征分桶
机器学习中最基础的一步就是数据的特征工程,这其中最常见的就是数值型特征的分桶,下面使用两种方法对数值型特征分桶并对比效率。原创 2022-06-07 17:01:46 · 680 阅读 · 0 评论 -
Python - 寻找数组的子集
给定一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。这里采用位运算解决。原创 2022-02-18 16:45:49 · 1862 阅读 · 4 评论 -
Python - 构造 O(1) 时间插入、删除和获取随机元素的集合
设计一个支持在平均 时间复杂度 O(1) 下, 执行以下操作的数据结构。注意: 允许出现重复元素。集合包含以下三个功能:A.insert(val):向集合中插入元素 val。B.remove(val):当 val 存在时,从集合中移除一个 val。C.getRandom:从现有集合中随机获取一个元素。每个元素被返回的概率应该与其在集合中的数量呈线性相关。...原创 2022-02-17 14:36:10 · 1335 阅读 · 0 评论 -
Python - N 皇后解法 数组 & 移位
N 皇后问题又叫 8皇后问题,研究的是如何将 n 个皇后放置于 n x n 的棋盘上,并且找到使 n 个皇后无法互相攻击的不同摆法。原创 2021-12-16 18:21:58 · 2230 阅读 · 5 评论 -
Python - 返回 1:n 中所有可能的 k 个数的组合
一.引言给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。示例:输入: n = 4 k = 2输出: [[2,4],[3,4],[2,3],[1,2],[1,3],[1,4]]n=4 代表待组合 list = [1,2,3,4]二.递归调用1.方法参数combine 为主方法,getCombine 为实际递归调用的方法,主要有5个参数:res[list] : 保存存储结果prefix[lsit] : 保存当前前缀n : 给定数字,代表原创 2021-12-11 20:27:43 · 3456 阅读 · 1 评论 -
Python - 两数相除 递进版
给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商原创 2021-11-30 08:29:29 · 2040 阅读 · 0 评论 -
Python - 两数相加 (有链表 && 无链表)
给定两个非空的列表,表示两个非负的整数。它们每位数字都是按照 顺序的方式存储的,并且每个节点只能存储一位数字。请将两个数相加并返回结果。原创 2021-11-27 17:18:25 · 1509 阅读 · 0 评论 -
Python - 寻找最大矩形 数字版&矩阵版
算法:根据数字数组 、 数字矩阵获取最大矩阵面积图文详解原创 2021-11-22 11:52:55 · 3799 阅读 · 0 评论 -
Spark - BloomFilter 推导与工业界应用
BloomFilter 的原理推导与工业界【scala/java】的应用原创 2021-11-18 15:26:30 · 2212 阅读 · 0 评论 -
Python - 判断两树是否相同
判断两棵树是否完全一致原创 2021-11-16 20:51:07 · 1649 阅读 · 0 评论 -
Python - 求数组的全排列
一.引言给定一个正整数 N,输出数列 1,2,3,...,N 的全排列。简单分析一下,N 个正整数,总共满足的可能性为 N!= N * (N-1) * ... * 1。通过遍历每一个位置,分别放置不同的数字即可达到问题要求。先用一个最 for 的方案理解一下: nums = [1, 2, 3] candidates = [] for i in nums: for j in nums: for k in nums:原创 2021-11-09 10:17:07 · 4895 阅读 · 0 评论 -
Python - 求两数的最大公约数与最小公倍数
一.引言最大公约数Greatest Common Divisor ,指两个或多个整数共有约数中最大的一个最小公倍数Least Common Multiple,指两个或多个整数公有的倍数中最小的一个二.最大公约数 GCD最大公约数一定小于等于两数中较小的 num,所以遍历 1- smaller 里所有的数字。def gcd(x, y): _gcd = 1 if x > y: smaller = y else: smal..原创 2021-11-06 18:06:28 · 5404 阅读 · 0 评论 -
Scala/Java - BitMap 构建与增删改查
一.引言BitMap 采用 bit 为单位存储数据,因此得名 BitMap;面对大规模数据去重、存储时,常见的存储方法会占用大量存储空间,这时候便需要 BitMap。Java 中一个 Int 占用4字节,一个字节等于8个比特,所以存储一个 int 需要 4x8=32 个 bit,当存储单位由int 切换为 bit 时,可以粗略认为存储空间节省了 32 倍,下面看一下如何构造 BitMap,以及增删改查。二.二进制计算基础因为 BitMap 的操作都是基于二进制运算进行,所以需要先熟悉一下二.原创 2021-11-06 17:00:13 · 817 阅读 · 0 评论 -
Python - 判断数组中是否存在目标字符串
一.引言给定一个m x n二维字符网格board和一个字符串单词word。如果word存在于网格中,返回true;否则,返回false。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。主要有两个注意点:A.字符串的连续性: 通过相邻的单元格字符对字符串实现拼接,所以对于一个点来说有四种选择,上下左右B.复用性: 同一个位置的字符只能使用一次,不能重复利用......原创 2021-11-01 20:13:46 · 3376 阅读 · 0 评论 -
Python - 动态规划之寻找并显示所有路径
一.引言一个机器人位于一个m x n网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。求可能的路径个数。二.动态规划实现1.代码实现这是动态规划最基础的一个题目,转化到坐标系中,主要信息有两个:A.网格大小 M x N,起始点 (0,0) 终点 (m-1, n-1)B. 每次只能向下或者向右移动,假设当前点 (k, j),则下一步的坐标可能为 (.....原创 2021-10-28 16:18:44 · 3904 阅读 · 0 评论 -
Python - 寻找和为指定偶数的质数对
一.引言给定任意一个大于10的偶数,寻找所有和为该偶数的质数对二.实现1.判断一个数字是否为质数质数的定义是在大于1的自然数中,除了1和它本身不再有其他因数的自然数,所以判断 2 到 target - 1 之间的数字都无法整除,则该数为素数# 寻找素数 2 -> target-1 都不能整除def isPrime(num): is_prime = 1 for interval in range(2, num): if num % interv原创 2021-10-27 10:47:15 · 540 阅读 · 0 评论 -
深度学习 - 33.GraphEmbedding Node2vec 图文详解
一.引言前面介绍了如何生成带权的图:GraphEmbedding - networkx获取图结构从带权的图随机游走生成序列:GraphEmbedding - DeepWalk 随机游走embedding 向量的评估与可视化:GraphEmbedding - embedding 向量的降维与可视化以及复杂度O(1)的采样算法 Alias:GraphEmbedding - Alias 采样图文详解还有二叉树搜索的 DFS 与 BFS:二叉树的遍历 DFS 与 BFS结合上面5个.....原创 2021-08-24 19:53:08 · 5963 阅读 · 5 评论 -
算法-遍历二叉树-层序 BFS
一.算法要求给定一棵二叉树,使用层序遍历二叉树二.二叉树遍历层序遍历又称作BFS即广度优先遍历,算法要求逐层遍历二叉树节点。1.给定二叉树2.定义二叉树并生成class BinaryTree(object): # 初始化 def __init__(self, data=None, left=None, right=None): self.data = data self.left = left self.r原创 2021-07-01 20:43:33 · 313 阅读 · 0 评论 -
算法-遍历二叉树-前序+中序+后序 DFS
一.算法要求给定一棵二叉树,分别使用前序,中序,后序遍历二叉树二.二叉树1.定义二叉树是n个有限元素的集合,该集合或者为空、或者由一个称为根(root)的元素及两个不相交的、被分别称为左子树和右子树的二叉树组成,是有序树。当集合为空时,称该二叉树为空二叉树。在二叉树中,一个元素也称作一个节点,一般一个二叉树由根节点,左子树,右子树构成,最下面的节点也常称为叶节点。2.前序遍历Root-Left-Right 根左右,按照这个规则递归即可,这里给出前序遍历的具体操作,中序原创 2021-06-25 16:30:51 · 669 阅读 · 1 评论 -
算法-二分法判断数组是否存在目标数字
一.算法要求目标数字: target目标数组: Array(MxN) 每一行从左向右递增,每一列从上到下递增且下一行元素大于上一行元素target 存在返回坐标,不存在返回 -1,后续测试都将以 array_test 为例,target 可以自选。有一个 m*n 的矩阵1.每一行从左到右递增2.下一行的元素大于上一行的元素例如: array_test = [[1, 8, 10, 15, 17], [20, 24, 25, 30, 31].原创 2021-06-24 19:44:19 · 533 阅读 · 0 评论 -
算法-二分法和牛顿法求指定精度平方根
一.引言给定某个整数,给定固定精度,求该整数对应精度的平方根。假设目标数字为 targrt,则寻找平方根数使得 sqrt(target) = Left = Right = sqrt(Left * Right)退出条件: Left 与 Right 的整数部分和小数点后N(根据精度要求)位全部相同二.精度状态检测实现求平方根方法前首先需要定义一个检查精度的函数,用来检查对应平方根是否是满足精度的平方根。判断方法很简单,根据迭代得到的两个数字 Left 与 Right,去除整数部分,判断.原创 2021-06-23 16:52:36 · 2613 阅读 · 2 评论 -
常用知识 Wilson CTR
引言:广告推荐场景下经常用 CTR 点击率当做参考指标,p1=50/100=0.5 与 p2=5000/10000=0.5 虽然都是0.5的点击率,但是从统计学角度看两者的置信度不同,从大数定律的角度,样本足够大时频率会近似于概率,所以 Wilson CTR 的引入就是为了解决样本数量相差情况下置信度不同的问题。其核心思想是通过假设检验的方式, 通过置信度构造 CTR 的置信区间。公式: p ...原创 2021-02-07 19:51:27 · 1713 阅读 · 1 评论 -
Tensorflow-reduce_sum 函数 Axis 详解
编程过程中经常需要对数组进行处理,而sum又是经常需要用到的函数,sum函数传参时会用到axis参数,低维度还好,高维度经常容易混淆,本文基于TF,对数组sum时axis进行详解,即对哪个位置加,加完形状变什么样:Tip:tf只是用来调用生成结果,对axis的理解适合任意语言Sum首先明确axis的作用,axis参数是加和时用来固定的轴,也可以说是数学里的维度。常见的情形遇到的是...原创 2020-04-28 15:22:16 · 1219 阅读 · 0 评论 -
编程笔记-rand7()生成rand10()
概述已知随机数生成函数rand7()可以生成整数1-7之间的均匀分布,如何使用rand7()构造rand10(),使rand10()可以生成整数1-10的均匀分布分析要保证rand10()生成的随机数是1-10的均匀分布,可以先产生1-10*n的均匀分布,假设x是1-10*n区间上的一个随机数,那么x%10+1就是均匀分布在1-10区间上的整数,下面就用rand7()去生成1-1......原创 2018-12-10 11:37:02 · 1315 阅读 · 0 评论 -
快速排序-提取排序索引 算法
引言上篇文章的运行结果会返回一个特征重要性列表,表示了一个预测分类问题中,各变量对分类的贡献程度,为了方便,我们需要将重要性排序,从而直观看的哪些是重要的特征,哪些是不重要的,其次,为了提高效率,有时我们需要的是特征对应的索引,而不是特征具体的值,例如我们需要首先知道是几号特征最重要,其次才需要知道它的重要性占比是多少,所以这篇文章主要介绍排序算法和返回索引.回顾[ 0.01711044 0.0......原创 2018-05-19 14:19:46 · 2556 阅读 · 1 评论