- 博客(15)
- 资源 (3)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 “基本算法”系列博文的说明
最近在刷Leetcode,发现里面很多题目都会用到一些固定的算法,为此,我萌发了将其总结起来的想法,“基本算法”系列博文也由此诞生,它将会与“Leetcode”系列博文同步更新,两者搭配使用,效果更佳。 该系列博文适用于有数据结构和算法基础的人,博文并不会过多介绍算法中涉及的数据结构原理以及算法本身的原理,博文的侧重点是:使用何种算法解决问题,这些算法的代码实现,...
2019-05-16 17:47:04
168
原创 如何反转单向链表?
这里默认不能修改节点中的值,不能新建新的链表来进行反转,反转链表只能在原单向链表上进行。具体代码如下所示:public class ListNode{ public int value; public ListNode next; public ListNode(int value){ this.value = value; }...
2019-05-19 22:21:15
275
原创 如何反转数组?
解决方案 本博文讨论的“数组反转”是直接修改原数组,而不是重新创建一个新数组进行反转。一般有两种算法,一种是计算出两者的索引值,据此进行交换,可以参考StringBuilder类中的reverse方法;一种是利用双指针,移动数组两端进行交换。算法实现 第一种方法的实现代码如下所示:public void reverse(int[] ar...
2019-05-19 21:20:47
1208
原创 如何在有序数组中搜索特定数据?
解决方案 在数组中搜索数据,一般我们都是采用遍历的方式,复杂度为O(n)。有序数组中包含大小信息,可以将其视作二叉搜索树结构,故该问题可以使用二分法解决。关于二分法的一些介绍,可以提供一个传送门:二分法。算法实现 一般而言,二分法都有两个版本,一种是C++中的左闭右开(下界)版本,一种是Java中的左闭右闭版本。左闭右开版本 左闭右开版...
2019-05-16 22:52:00
1455
原创 Java实现红黑树的插入和删除
前言红黑树定义红黑树类的准备工作红黑树的验证红黑树的插入红黑树的删除后记前言 红黑树算是最有名的一种平衡二叉搜索树了,几乎只要涉及平衡搜索树的应用,就有它的身影。关于它与AVL树效率之争,也是人们津津乐道的话题。总而言之,红黑树是一种非常优秀的平衡树,网上关于它的博客真的浩如云烟,标题也都是彻底弄懂或者深入理解这样的字眼,不过通读以后,发现大多数描述也...
2019-01-18 21:18:16
971
原创 Java实现AVL树的添加和删除
前言AVL树的基本性质AVL树节点设计插入时会出现什么问题?2为3的左节点,1为2的左节点2为1的右节点,3为2的右节点1为3的左节点,2为1的右节点3为1的右节点,2为3的左节点AVL树的插入AVL树的判断AVL树的删除后记前言 前面写过两篇关于二叉搜索树的博文,但是它不具有平衡性,最差情况时,会退化成链表,查找的效率会降至...
2019-01-10 22:42:26
3553
1
原创 Java实现二叉搜索树的遍历
前言三大基本遍历前序遍历递归版本的前序遍历非递归版本的前序遍历判断前序遍历数组是否合理?中序遍历递归版中序遍历非递归版中序遍历判断中序遍历数组是否合理?中序遍历的应用后序遍历递归版后序遍历非递归版后序遍历判断后序遍历数组是否合理?遍历重建二叉搜索树前序遍历和中序遍历重建二叉树前序结果重建二叉搜索树后序结果重建二叉搜索树深度...
2018-12-28 00:51:50
768
原创 Java实现二叉搜索树的插入、删除和搜索
前言二叉树类和树节点类的定义插入删除搜索判断二叉搜索树后记前言 二叉搜索树是树数据结构中比较简单的类型,它通过定义左节点比父节点小,右节点比父节点大,将信息分为两种可能,达到搜索复杂度为O()。关于二叉搜索树的定义细节,网上博文比较多,这方面就不在赘述。该博文侧重点是对二叉搜索树实现插入、删除和搜索的操作。二叉树类和树节点类的定义 ...
2018-12-26 20:07:15
1028
原创 Java计算组合数以及生成组合排列
前言组合数计算公式法逐个相除法(错误)逐个相除法修正版素数幂乘法基本公式法平方差连乘法组合恒等法简单递归法杨辉三角法杨辉三角优化法二进制法组合数计算小结获取数组的组合排列二进制法基本迭代法从后向前迭代法(Matlab版本)从后向前优化法组合排列小结后记前言 最近学习了一下排列组合的相关知识,组合数...
2018-11-24 00:28:29
14961
5
原创 Java实现整型素数的判断
前言定义判别法定义优化判别法孪生素数性质判别法 Matlab版素数判别法后记前言 素数判断的依据是它的定义和它的性质。参考百度百科,素数被定义是一个大于1且只有1和它本身两个因数的自然数。而它的性质就非常多了,深入起来也非常之麻烦,在后面的算法实现中,我也只使用了孪生素数中的一个性质来判断素数。定义判别法 根据素数的定义我们可以利用余...
2018-11-18 18:36:27
316
原创 Java计算二进制数中1的个数
前言逐位法查表法Brian Kernighan法分治法Hamming Weight法Hamming Weight优化法Hamming Weight乘法优化法MIT HAKMEM 169算法江峰求一算法分治法总结效率测试后记前言 昨天学习全组合时,突然涉及到如何计算二进制中1的问题,我就直接使用的Integer.bitCount的...
2018-11-18 15:18:18
11443
1
原创 Java实现数组去重和两数组交并集
前言Java平台数组去重基本的数组去重法HashMap实现数组去重两数组交集基本的两数组求交法HashMap版的两数组求交法两数组并集基本的两数组求并法HashMap版的两数组求并法Matlab平台Matlab处理数组去重Matlab求两数组交集Matlab求两数组并集后记前言 前几天,有人问我两数组的交并集如何实现...
2018-11-11 19:54:37
6643
1
原创 Java分解整型质因数
前言基本分解质因数法素数分解质因数法Matlab2014a版分解质因数法后记前言 前面写过两篇关于素数相关的博客,一篇是关于如何判断素数,一篇是关于如何求取指定范围的素数集。参考百度百科,分解质因数就是是把一个合数分解成若干个质因数的乘积形式。可以看到分解质因数其实和质数还是关系的,因此萌发了写这篇博客的念头。基本分解质因数法 该方法的基...
2018-11-10 23:59:10
1067
原创 Java实现快速查找某个范围内的所有素数
Java实现快速查找某个范围内的所有素数前言定义法筛选法筛选优化法后记前言素数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。定义非常简单,但是它却难以定量化,研究起来非常复杂,有兴趣的可以买本研究素数的书看看。前几天去B站,看到有关这方面的介绍,给个传送门:素数。我这里主要是介绍几种查找素数的方法,研究这些算法优化的思路。定义法我们一般判断素数都是利用求余的思想,因此查找素...
2018-11-09 23:39:54
6474
原创 Java实现九大内部排序
Java实现九大内部排序前言冒泡排序选择排序插入排序希尔排序合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入前言排序,其实是一...
2018-10-28 22:24:37
862
MATLAB Textbook R2014a
2016-08-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人