随笔分类 -  数据结构与算法

摘要:1.前序、中序、后序递归方式遍历二叉树 public void preOrderRecur(Node T) { if (T != null) { System.out.print(T.val + " "); preOrderRecur(T.left); preOrderRecur(T.right); 阅读全文
posted @ 2018-09-03 21:43 BigJunOba 阅读(337) 评论(5) 推荐(0)
摘要: 阅读全文
posted @ 2018-09-03 21:43 BigJunOba 阅读(124) 评论(0) 推荐(0)
摘要:1. 阅读全文
posted @ 2018-09-03 21:41 BigJunOba 阅读(114) 评论(0) 推荐(0)
摘要:一、 阅读全文
posted @ 2018-09-03 14:25 BigJunOba 阅读(142) 评论(0) 推荐(0)
摘要:一、 阅读全文
posted @ 2018-09-03 14:24 BigJunOba 阅读(149) 评论(0) 推荐(0)
摘要:一、475. Heaters 1.思路:(1)先对heaters数组进行排序(2)对于每个house,计算其在heaters中的位置(3)计算这个house到其左和右heater的距离的最小值,也就是说heater只管离自己最近的house。(4)然后,取这些最小值的最大值即可。 2.代码:需要注意 阅读全文
posted @ 2018-09-03 14:24 BigJunOba 阅读(180) 评论(0) 推荐(0)
摘要:一、 阅读全文
posted @ 2018-09-03 10:45 BigJunOba 阅读(112) 评论(0) 推荐(0)
摘要:一、204. Count Primes 1.数学原理:两个质数的乘积一定是合数。一个质数乘以任何数的积都一定不是质数。(除了1) 2.代码:需要注意的点:for (int j = 2; j * i < n; j++) notPremes[i * j] = true; 二、441. Arranging 阅读全文
posted @ 2018-09-03 10:40 BigJunOba 阅读(181) 评论(0) 推荐(0)
摘要:一、500. Keyboard Row 思路:将键盘上每一行的字母映射到所在的行数,如果单词的所有字母中存在和第一个单词所在的行数不相同的字母,则这个单词将不是符合需求的单词。 需要注意的地方: 1.whichRow = -1;以及 if (whichRow != -1) list.add(s);这 阅读全文
posted @ 2018-09-03 10:39 BigJunOba 阅读(166) 评论(0) 推荐(0)
摘要:一、232. Implement Queue using Stacks private Stack<Integer> stack; /** Initialize your data structure here. */ public e232() { stack = new Stack<>(); } 阅读全文
posted @ 2018-09-03 10:36 BigJunOba 阅读(139) 评论(0) 推荐(0)
摘要:一、Easy 696 Count Binary Substrings 解题思路:由于字符串是0和1相互交叉的,因此: 1.将s = "110001111000000"分成四个子字符串:group = {11 000 1111 000000} 2.如果group[i] = 2, group[i+1]= 阅读全文
posted @ 2018-08-31 23:20 BigJunOba 阅读(256) 评论(0) 推荐(0)
摘要:一、448. Find All Numbers Disappeared in an Array 1.算法思路(本题关键点:注意数组下标的范围和要求的数之间有什么联系。) 既然要遍历[1,n]中的数,由于数组中的长度已经保证了为n,因此数组的下标加上1就正好满足从1到n,因此,要对下标做文章。 2.代 阅读全文
posted @ 2018-08-31 23:19 BigJunOba 阅读(190) 评论(0) 推荐(0)
摘要:1.知识点回顾 https://www.cnblogs.com/BigJunOba/p/9174206.html https://www.cnblogs.com/BigJunOba/p/9174217.html 2.典型例题(Easy) (1)707 Design Linked List 模型:He 阅读全文
posted @ 2018-08-31 08:51 BigJunOba 阅读(199) 评论(0) 推荐(0)
摘要:一、归并排序的定义 归并排序(Merging Sort)就是利用归并的思想实现的排序方法。它的原理是假设初始序列含有n个记录,则可以看成是n个有序的子序列,每个子序列的长度为1,然后两两归并,得到【n/2】个长度为2或1的有序子序列;再两两归并,...,如此反复,直到得到一个长度为n的有序序列为止, 阅读全文
posted @ 2018-07-12 11:36 BigJunOba 阅读(414) 评论(0) 推荐(0)
摘要:一、插入排序的基本思想 从初始有序的子集合开始,不断地把新的数据元素插入到已排列有序子集合的合适位置上,使子集合中数据元素的个数不断增多,当子集合等于集合时,插入排序算法结束。常用的 插入排序算法有直接插入排序和希尔排序两种。 二、直接插入排序 1.直接插入排序的定义 直接插入排序的基本思想是:顺序 阅读全文
posted @ 2018-07-12 10:27 BigJunOba 阅读(299) 评论(0) 推荐(0)
摘要:一、选择排序的定义 选择排序的基本思想是:每次从待排序的数据元素集合中选取最小(或最大)的数据元素放到数据元素集合的最前(或最后),数据元素集合不断缩小,当数据元素集合为空时排序过程结束。常用的选择排序有直接选择排序和堆排序两种。堆排序是一种基于完全二叉树的排序。 二、直接选择排序 1.直接选择排序 阅读全文
posted @ 2018-07-12 09:00 BigJunOba 阅读(631) 评论(0) 推荐(0)
摘要:一、交换排序的定义 利用交换数据元素的位置进行排序的方法称为交换排序。常用的交换排序方法有冒泡排序和快速排序算法。快速排序算法是一种分区交换排序算法。 二、冒泡排序 1.冒泡排序的定义 冒泡排序(Bubble Sort)是一种交换排序,它的基本思想是:两两比较相邻记录的关键字,如果反序则交换,直到没 阅读全文
posted @ 2018-07-11 20:42 BigJunOba 阅读(726) 评论(1) 推荐(1)
摘要:一、排序的基本概念 假设含有n个记录的序列为{r1,r2,...,rn},其相应的关键字分别为{k1,k2,...,kn},需确定1,2,...,n的一种排列p1,p2,...,pn,使其相应的关键字满足kp1≤kp2≤...≤kpn非递减(或非递增)关系,及时地序列称为一个按关键字有序的序列{rp 阅读全文
posted @ 2018-07-11 17:16 BigJunOba 阅读(1139) 评论(0) 推荐(0)
摘要:一、散列表查找的基础知识 1.散列表查找的定义 散列技术是在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使得每个关键字key对应一个存储位置f(key)。查找时,根据这个确定的对应关系找到给定值key的映射f(key),若查找集合中存在这个记录,则必定存在在f(key)的位置上。 把对应 阅读全文
posted @ 2018-07-10 21:41 BigJunOba 阅读(1111) 评论(0) 推荐(0)
摘要:一、多路查找树的背景 前面所讨论的查找算法都是在内存中进行的,它们适用于较小的文件,而对于较大的、存放在外存储器上的文件就不合适了,对于此类大规模的文件,即使是采用了平衡二叉树,在查找效率上仍然较低。 如果要操作的数据集非常大,大到内存已经没办法处理了,这种情况下,对数据的处理需要不断从硬盘等存储设 阅读全文
posted @ 2018-07-10 11:34 BigJunOba 阅读(1052) 评论(0) 推荐(0)