![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
Mr丶Husky
因为相信
展开
-
KMP算法Java实现
源代码如下所示:package com.zuoshen;public class Problem_02_KMPAlgorithm { public static int getIndexOf(String s, String m) { if (s == null || m == null || m.length() < 1 || s.length() < m.length()) {原创 2017-09-04 21:41:50 · 491 阅读 · 0 评论 -
Java实现Morris遍历二叉树
Morris遍历二叉树是遍历二叉树的神级方法,它的时间复杂度仅为O(n),空间复杂度为O(1)。主要包含以下两大步骤:1、拿到一个节点,如果该节点无左子树,那么节点指向它的右节点。2、如果这个节点有左子树,找到左子树的最右节点。 a、如果最右节点指向null,则让最右节点指向当前节点,并将该目标节点向左孩子移动。 b、如果最右节点已经指向该节点,则让最右原创 2017-08-24 22:48:02 · 1313 阅读 · 0 评论 -
Java实现判断二叉树是否为平衡二叉树
平衡二叉树的定义是:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。我们要判断是否为平衡二叉树就要一直递归判断它的子树是否为平衡二叉树,一层层去判断。代码如下所示:package problems_2017_08_21;/** * @author islongfei * 判断二叉树是否为平衡二叉树 * (它是一 棵空树或它原创 2017-08-25 09:37:34 · 499 阅读 · 0 评论 -
BFPRT算法(求前k个小的数)-Java实现
最近学习了左神BFPRT算法,给大家先讲个段子。左神说他每次去美国面试,他都会拿BFPRT算法吹一吹。美国5个大佬在一个美丽的地方研究出来这个算法,他说自己热爱算法,他会BFPRT,每次去美国都会怀着朝圣的姿态去在那个地方转转。面试官一听:哇,这么厉害,过!!!!!!!好了,下来说说这个算法。BFPRT算法是在进行大量数据排序求topk(前k个最大或最小的数)时最优算法。为...原创 2017-08-05 11:26:33 · 1142 阅读 · 0 评论 -
Master公式计算递归时间复杂度
我们在算递归算法的时间复杂度时,Master定理为我们提供了很强大的便利!主要公式为:T(n)=aT(n/b)+f(n),条件是a>=1,b>1.为了方便起见,我们可以把上述公式转化为这样:F(n)=aF()原创 2017-08-03 23:00:10 · 3345 阅读 · 0 评论 -
二维数组寻找小岛
有这样一道题:是不是看起来很复杂,昨天听了左神讲的课,他用了一个简单的算法,时间复杂度只有O(N*M)数组长度那么少!一开始看这个题,没有什么思路,想着这个题时间复杂都肯定很高吧!直到最后才发现,卧槽,还有这种操作!!!!话不多说,直接上自己的代码!package com.zuoshen;public class Problem_02_Islands {/* 给原创 2017-08-03 14:16:00 · 1479 阅读 · 0 评论 -
数组排序
package com.wlf.array;import java.util.Arrays;import java.util.Comparator;public class ArraySort { public static void main(String[] args) { Integer[] intArr = new Integer[] { 23, 34, 4,原创 2017-04-14 16:37:44 · 371 阅读 · 0 评论 -
快速排序
package com.wlf.array;public class QuickSort { /* * 快速排序 时间复杂度:O(n)-0(n²) 空间复杂度O(1),需要一个辅助空间作参考。 * * 可以简单理解为"挖坑填数"+"分治法(递归)" * 先取一个参考数x,比x小放其左边,反之放右边。(以x参考,相当于在x处挖了个坑,那么就必须填坑)原创 2017-04-12 18:25:27 · 448 阅读 · 0 评论 -
字符串之替换空格
有道题是这样的:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。首先想到的是根据Java提供的StringBuffer中的repalceAll直接替换。并利用正则表达式表示空格,提高效率。一行代码便能解决问题!代码如下所示:package com.wlf.String;public cla...原创 2017-07-30 19:05:35 · 414 阅读 · 2 评论