mbskyhan
码龄15年
求更新 关注
提问 私信
  • 博客:21,858
    21,858
    总访问量
  • 27
    原创
  • 4
    粉丝
  • 76
    关注
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:中国
加入CSDN时间: 2010-10-14
博客简介:

mbskyhan的专栏

查看详细资料
个人成就
  • 获得6次点赞
  • 内容获得11次评论
  • 获得9次收藏
  • 博客总排名1,572,492名
创作历程
  • 21篇
    2021年
  • 1篇
    2020年
  • 5篇
    2014年
  • 2篇
    2013年
成就勋章
TA的专栏
  • 感悟
    4篇

TA关注的专栏 0

TA关注的收藏夹 0

TA关注的社区 0

TA参与的活动 0

兴趣领域 设置
  • 大数据
    hadoop
创作活动更多

新星杯·14天创作挑战营·第13期

这是一个以写作博客为目的的创作活动,旨在鼓励大学生博主们挖掘自己的创作潜能,展现自己的写作才华。如果你是一位热爱写作的、想要展现自己创作才华的小伙伴,那么,快来参加吧!我们一起发掘写作的魅力,书写出属于我们的故事。我们诚挚邀请你们参加为期14天的创作挑战赛!注: 1、参赛者可以进入活动群进行交流、互相鼓励与支持(开卷),虚竹哥会分享创作心得和涨粉心得,答疑及活动群请见:https://bbs.csdn.net/topics/619781944 【进活动群,得奖概率会更大,因为有辅导】 2、文章质量分查询:https://www.csdn.net/qc

90人参与 去参加
  • 最近
  • 文章
  • 专栏
  • 代码仓
  • 资源
  • 收藏
  • 关注/订阅/互动
更多
  • 最近

  • 文章

  • 专栏

  • 代码仓

  • 资源

  • 收藏

  • 关注/订阅/互动

  • 社区

  • 帖子

  • 问答

  • 课程

  • 视频

搜索 取消

okio-3.0.0.jar

发布资源 2021.11.06 ·
jar

关于求后缀数组的公共前缀的长度height数组求法思路与代码

字符串匹配之后缀数组概念:后缀数组:是所有后缀按字典排序后,数组中记录的起始下标。sa[0]=5,起始下标为5的后缀在所有后缀中字典最小。rank数组:是给定后缀下标,返回字典顺序。rank[5]=0 rank[sa[i]]=i后缀数组主要是为了匹配。子串:一定是某个后缀的前缀串求height数组,height数组就是两个后缀的公共前缀的长度可以用暴利求解法,但是复杂度高,可以用其它方法根据rank排名和hg[rank[i]]>hg[rank[i-1]]+1,数学公式推理。在一直后.
原创
博文更新于 2021.04.12 ·
262 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

字符串匹配的后缀数组的直接比较和利用rank[i]=k的倍增法

public static Suff[] getSa(String s) { Suff [] SuffArrays = new Suff[s.length()]; //sa[i]=k表明的排名为i的后缀是从k开始的 for(int i=0;i<s.length();i++) { SuffArrays[i]=new Suff(s.substring(i),i);//substring(i)代表从起始位...
原创
博文更新于 2021.04.10 ·
313 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

字符串匹配中KMP算法的next数组构造与思考

对于KMP算法的next算法,匹配规则i不动,j而是根据next[j]=k。如果在j位置失配,则退到k位置。构造next数组的是根据前缀与后缀的最长匹配。。。如ababaa 的next数组是-100123.所以上述代码改成match(string s, string p) if s.length==0 || p.length==0 return -1;//-1表示找不到 if (p.length>s.length) return -1 ...
原创
博文更新于 2021.04.06 ·
246 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

字符串基础2

去掉字符串连续的k个0,k为动态输入。思路1:用replaceAll的正则是替换k个0为空,正则表达式0{k}思路2:进行count计数,出现的0,伪代码如下: repalcek(string s,int k): int count=0; Stringbuiler sb = new for(int i=0;i<s.length;i++) char c = s.charAt(i) if(c==...
原创
博文更新于 2021.04.05 ·
118 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

字符串基础算法1

判断字符串的有无存在,首先字符串是unicode还是ascill的如果是ascill的则是128个字符,扩展的ascill是256个字符这样可以定义一个128大小的数组,然后用计数排序的方式统计每个元素出现的个数伪代码如下:checkDifference(String ins) if(StringUtils.isEmpty(ins)) return true; int [] flag = new int[128] for(i from 0 to length...
原创
博文更新于 2021.04.04 ·
156 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

子数组的最大累加和已经子矩阵的最大累加和思路以及伪代码

昨天晚上是一种暴利解法求解子数组的累加和,下面是另一种解法以及其它变体思路2:单向扫描求和,如果是累加和为负数则丢弃,正数的时候则继续,最后返回max,,, //这个思路可以记住findSum2(int arr[])//算法的复杂度为On sum=arr[0] max=sum int left=0,right=0 for(i=1;i<length;i++) if (sum>=0) sum+=arr[i] e...
原创
博文更新于 2021.04.03 ·
347 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

子数组的累加和计算

给定一个数组arr=[1,-2,3,5,-2,6,-1]所有子数组中[3,5,-2,6]可以累加最大和为12.所以返回12。思路:首先考虑长度为为1的数组有7个长度为2的数组6个长度为3的数组5个长度为4的数组为4个。。。。所以总共有n(n+1)/2个。用暴利解法,求出所有的和进行最大的searchSum(int arr[]): maxSum = 0; for(int i=0;i<arr.length;i++) for(j=1;j<length;...
原创
博文更新于 2021.04.02 ·
300 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

找出边界为1的最大子方阵的思路与伪代码实现

找出边界为1的最大子方阵max(A,N) int n=N;//这是n的四次方的复杂度,下面可以进行优化 while(n>0) for(i=0 i<n;i++) for(j=0 j<n;j++) //三层循环 //i,j是顶点 r = i;//定义个行移动量 c = j; //定义个列移动量 这里注意数组的越界,要判断 //上面一条边逻辑 ...
原创
博文更新于 2021.03.27 ·
217 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

求找出边界为1的最大子方阵的伪代码(运用上下左右的思想,同时定义个行列指针进行移动)

max(A,N) int n=N; while(n>0) for(i=0 i<n;i++) for(j=0 j<n;j++) //三层循环 //i,j是顶点 r = i;//定义个行移动量 c = j; //定义个列移动量 //上面一条边逻辑 while(c<j+n) if A[r][c]==0 conti...
原创
博文更新于 2021.03.24 ·
140 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

昨天的topK的两种思路的伪代码实现

topK的伪代码如下(堆思想的实现)print topK() int k //输入k个数 int index = 0 用来计数输入了多少个元素 int [] heap 数组大小 k = scanner.nextInt() x = scanner.nextInt() while (x!=-1) deal(x) x = scanner.nextInt() //当大小不足k的时候则添加元素, 如果等于k则进行...
原创
博文更新于 2021.03.21 ·
361 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

在海量数据中寻找topK的一些思路分析

求前k个数从大数据量里面排序的前k个数,topk.思路1:维持k大小的数组数,然后求出数组的这个数组的最小值,当再输入k+1个数的时候,和最小的值比较,如果大于最小的值,则替换原先的最小值放入数组中。对于时间复杂度首先是先k个数比较k次然后对于每个数N-k都需要进行k次比较(N-K)k则总共是k+(N-K)k算法复杂度思路2:如果需要NlgK的复杂度则如何设计算法设计小顶堆的概念每次都和堆顶元素比较向下调整...
原创
博文更新于 2021.03.20 ·
258 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

基数排序的思想以及伪代码实现

桶排序算法总结通过分配和收集的方式进行排序value/(max+1)*n(这是计算每个元素value应该放入哪个桶里)算出value应该到哪个桶里面,得出的是桶的下标O(N)---O(NlgN) //最好的情况是每个元素分到一个桶里为O(N)最坏情况是所有元素分到一个桶里,对桶里的元素用快速排序或者是插入排序则是O(NlgN)的复杂度k=N/M N个元素,M个桶O(N+C)O(N+NlgN-NlgM)(M等于1的时候就是O(N+lgN))基数排序的过程也是通过分配和收集过程实
原创
博文更新于 2021.03.14 ·
917 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

计数排序的一些思想,欢迎大家指正

计数排序用辅助数组对数中出现的数字计数,元素转下标,下标转元素假设元素均大于等于0,依次扫描原数组,将元素值k记录在辅助数组的k位上思想:空间复杂度:辅助空间k,k=max(source) 时间复杂度:扫描一次source,扫描一次helper,复杂度为N+k 非原址排序 稳定性:相同元素不会出现交叉,非原址都是拷贝来拷贝去 计数有缺陷,数据较为密集或者范围较小的时候适用。伪代码思路实现public static CountSort(source...
原创
博文更新于 2021.03.12 ·
142 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

关于堆排序的一些基础学习和伪代码实现

/**二叉树的存储存储到数组当中,会有先序中序和后序遍历例如一棵存储的二叉树数组元素 78,56,34,43,4,1,15,2,23先序遍历结果是 先根左右 78 56 43 2 23 34 1 15中序遍历结果是2 43 23 56 4 78 1 34后序遍历结果是 2 23 43 4 56 1 15 34 78/**伪代码如下: 利用的是递归调用的形式preOrder(arr , index): if (i >= arr.length)//终止条件当超过数组长度了就返回...
原创
博文更新于 2021.02.28 ·
950 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

关于寻找最小可用ID的算法伪代码实现

/***寻找最小可用id,,乱序排列从1开始。例如:1,5,2,10,11,6,4,。。。。则最小可用id为3如果数组大小为N的扫描不到了,则最小可用ID为N+1思路1:暴力破解法伪代码如下:findMinId(A):i=1while (true) //这里不用求数组长度循环数组长度 if (util.find(i)==-1) return i i++; return len+1思路2,先...
原创
博文更新于 2021.02.21 ·
431 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

关于寻找海王id的算法伪代码分析思路

//数组中某个元素出现次数超过了数组长度的一半,找出这个元素思路1,先排序再返回数组N/2的元素,算法复杂度是nlgn思路2, 顺序统计主元的思想,可以达到o(n)级别的复杂度思路3,消除法 定一个候选值,和次数变量,如果和候选值一样就次数加1,如果不一样,新的后选址加1,最后返回次数不为0的那个searchValue(A): int candicate = A[0]//候选值 int times=1//出现的次数,原始次数为1,不是0 len = A.length ...
原创
博文更新于 2021.02.19 ·
943 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

在一个乱序数组中找第K个小元素伪代码实现(基于递归和快速排序的实现版)

今天玩得时间比较多以至于只学习研究了一个算法,还是伪代码版。欢迎各位大牛指正学习//快速寻找乱序中的第K个元素思路:快速排序中主元的思想,主元左边是小于的主元右边是大于的伪代码如下:seletK(A,p,r,k){ q=partition(A,p,r)//获取主元 qK = q-p+1//主元是第几个元素 if (k==qK) return A[q] //注意这里是取q,不是取qK else if (k<qK)return seletK(A,p,q-1,k)...
原创
博文更新于 2021.02.18 ·
1082 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

快速排序算法的优化以及归并排序伪代码记录学习一个小时算法

*partition2(A,p,r)* {** //优化三点中值法优化代码防止迭代层数过高* * midIndex = p + ((r-p)>>1)//中间下表* * midValueIndex=-1* * if(A[p]<=A[midIndex]&&A[p]>=A[r])* * {* * midValueIndex=p* .
原创
博文更新于 2021.02.17 ·
346 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

关于快速排序的三种划分元素的方法

思路和伪代码如下:需要的小伙伴们自己实现/**** * 分治思想:划分子问题再合并 * 快排的重点是划分,归并的重点是合并 * 快速排序:1,分解,解决,合并 * 一遍单向扫描法: * 定主元,两个指针,一个是sp后面扫,另一个b指针 * 小于等于 sp右移,大于的bigger左移关键找出分 * 伪代码如下 * quickSort(A,p,r) * if (p<r) * q= partition(A,p,r) * quickSo.
原创
博文更新于 2021.02.16 ·
385 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多