
算法
文章平均质量分 70
xiayto
这个作者很懒,什么都没留下…
展开
-
【基础算法】差分数组
一、算法简介差分其实就是数据之间的差,什么数据的差呢?就是上面所给的原始数组的相邻元素之间的差值,我们令 d[i]=a[i+1]-a[i],一遍for循环即可将差分数组求出来。其实差分数组是一个辅助数组,从侧面来表示给定某一数组的变化,一般用来对数组进行区间修改的操作。二、相关例题此类题目比较简单,只需要注意边界的位置即可。1. leetcode 1094【解题思路】遍历trips数组构造差分数组,trip的开始处增加该站上的人数,同时在trip的结束处减去相应的人数。【代码】class S原创 2021-05-17 22:38:20 · 439 阅读 · 0 评论 -
背包问题及其变体(Java)
背包问题:最经典的0-1背包背包问题是有一个一定容量的背包,然后有一堆物品,这些物品有一定的重量,要求在不超过背包容量的情况下,装最多的重量的问题。背包问题的变体背包问题有很多的变体,主要有以下几个:物品不仅仅有重量还会对应不同的价值,求价值最高,而不是重量最高每个物品有无限个而不是只有一个不是求最大重量,而是求达到重量的组合的个数背包问题的解法:背包问题是用动态规划的方法解...原创 2019-07-26 15:51:25 · 795 阅读 · 0 评论 -
归并排序练习题(Java)
1、算法原理:首先归并排序的基本是将两个数组合并,将两个有序的数组合并为一个有序的数组,需要一个额外的辅助数组,例如a、b数组,合并为cc[0] 是 a[0] 和 b[0] 中较小的数,假设是a[0],然后a数组的指针加1 变为a[1]c[1] 是 a[1] 和 b[0] 中较小的数,如此类推这样进行一次合并时间复杂度是O(n)归并排序的思想是,将整个数组2等分地无限拆分为每组只有1...原创 2019-07-25 01:52:19 · 851 阅读 · 0 评论 -
快速排序练习题(Java)
快速排序1、算法实现快速排序的核心方法:partition,它首先随机选择一个数,然后以这个数为轴,小于它的放在它前面,大于它的放在后面,然后放回这个轴数的排序位置。有很多种实现方法,选择我比较熟悉的一种:private int partition(int[] nums, int begin, int end){ int pivot = nums[end]; i...原创 2019-07-24 15:56:46 · 2261 阅读 · 0 评论 -
深度学习优化方法总结
SGDSGD一般指小批量梯度下降,每一次迭代计算小批量的梯度,然后对参数进行更新,是最常见的优化方法了即:gt=∇θt−1f(θt−1)g_t = \nabla_{\theta_{t-1}}f(\theta_{t-1})gt=∇θt−1f(θt−1)Δθt=−η∗gt\Delta\theta_t = -\eta*g_tΔθt=−η∗gt其中η\etaη是学习率,θ\thetaθ...原创 2019-02-12 02:02:38 · 451 阅读 · 0 评论 -
Notes:文本分类任务
1 传统方法一般采用步骤:a.文本预处理b.特征提取,得到文本表示c.分类器分类a.文本预处理先根本停用词表去除停用词后,分词(用字会损失n-gram特征)b.特征提取,得到文本表示词袋模型、语义相关的主题模型(LSI、NMF、LDA)提取特征。c.分类器分类使用SVM、xgboost、LightGBM等分类器分类。2 深度学习的文本分类方法2.1 fastText...原创 2019-02-22 05:54:18 · 1130 阅读 · 0 评论 -
词向量经典模型:从word2vec、glove、ELMo到BERT
前言词向量技术将自然语言中的词转化为稠密的向量,相似的词会有相似的向量表示,这样的转化方便挖掘文字中词语和句子之间的特征。生成词向量的方法从一开始基于统计学的方法(共现矩阵、SVD分解)到基于不同结构的神经网络的语言模型方法。这里总结一下比较经典的语言模型方法:word2vec、glove、ELMo、BERT。其中BERT是最新Google发表的模型,在11个经典的NLP任务中全面超越最佳模型...原创 2018-12-05 23:39:27 · 35300 阅读 · 2 评论 -
海量数据编程常见问题及编程题(附解法)
常用方法:1)利用hash映射和堆进行排序。例如找出出现最多的前K个id,先映射为一个hash表,key是id,value是出现次数。然后遍历hash表,维护一个有K个节点的小顶堆,得到前K个出现最多的id。2)用Bloom filter。在做数据判重时,例如A出现的id是否在B出现过,如果对准确率没有严格的要求,可以牺牲一点点的准确率换取高的判断效率。3)用Bitmap。如果要对大量整数...原创 2018-11-19 15:15:11 · 502 阅读 · 0 评论 -
深度文本匹配发展总结
1、背景介绍文本匹配是自然语言处理中的一个核心问题,很多自然语言处理的任务都可以抽象成文本匹配问题,例如信息检索可以归结成查询项和文档的匹配,问答系统可以归结为问题和候选答案的匹配,对话系统可以归结为对话和回复的匹配。针对不同的任务选取合适的匹配模型,提高匹配的准确率成为自然语言处理任务的重要挑战。2、数据集介绍论文中经常用到的数据集:SNLI:570K条人工标注的英文句子对...原创 2018-07-28 02:39:15 · 12480 阅读 · 2 评论 -
C++快排 及 编程题
C++实现快排代码int Partition(int numbers[], int begin, int end){ int x = numbers[end]; int mid = begin - 1; for(int j = begin; j < end; j++) { if(numbers[j] < x) {原创 2018-03-05 21:24:17 · 539 阅读 · 1 评论