
算法
汪小哥
有多少时光可以挥洒~人生短短几十年~
展开
-
码农小汪-剑指Offer之33 -数组中的逆序对 冒泡排序 归并排序
题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。解题思路我一看到这道题,首先就想到了冒泡排序,总是两两比较然后统计次数!public class Sloution33 { /** * 冒泡解决问题 * @param array * @return */ publ原创 2016-04-04 23:49:42 · 648 阅读 · 0 评论 -
码农小汪剑指Offer之35-数字在排序数组中出现的次数 暴力 二分查找的运用
题目描述统计一个数字在排序数组中出现的次数。解题思路我们看一下题目中的关键字,第一个排序数组,已经排好序了,当然不能忽略这个问题。排好序在做的算法,一想肯定二分搜索这个东西,必须的想得到涩。我们寻找数字,又是排好序的。其实一般来说的,暴力解决这个问题,就没得艺术性可以说啦,简直没必要涩。使用二分是个比较好的选择!因为这里涉及到了统计次数。找到其中的一个。肯定在其前面或者后面还有,就像寻找就行了。注意原创 2016-04-05 16:25:56 · 707 阅读 · 0 评论 -
码农小汪剑指Offer之36-二叉树的深度 层次遍历 分而冶之
题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。解题思路我已看到这个题目的时候,就想到了利用分冶的方法,利用递归的思路。我们只要找到出口,分了之后就要合并啊。和我们的归并排序有点意思哦,昨天晚上做的那个类似的思路。 当前结点的Length=max(left,right)+1; 这个就是我的解题思路!其实还有思路。比如原创 2016-04-05 17:02:37 · 657 阅读 · 0 评论 -
分冶法之归并排序
1.分冶策越中的两种典型的划分案例(1).黑盒划分策越:合并排序 逆序对问题 根据问题的规模对原问题进行划分,而不考虑划分对象的属性值,所以形象的称之为黑盒策越(就是说我们归并排序的时候,划分为,两个小模块的时候,并没有按照其值的属性进行划分,而只是简单的对于我们的数组内的大小进行区分)(2)白盒策越:快速排序,最接近点对根据划分对象的特定的属性值,把对象划分为若干个子集(白盒问原创 2015-09-17 09:36:23 · 1072 阅读 · 0 评论 -
PriorityQueue详解
优先级队列是不同于先进先出队列的另一种队列。每次从队列中取出的是具有最高优先权的元素。 PriorityQueue是从JDK1.5开始提供的新的数据结构接口。 如果不提供Comparator的话,优先队列中元素默认按自然顺序排列,也就是数字默认是小的在队列头,字符串则按字典序排列。 如果想实现按照自己的意愿进行优先级排列的队列的话,需要实现Comparator接口。下面的方法,实现了根据某个变原创 2016-05-24 15:48:18 · 2822 阅读 · 0 评论 -
让链表的元素查询接近线性时间【跳跃表】
让链表的元素查询接近线性时间【跳跃表】无意中读到一篇文章AVL树,红黑树,B树,B+树,Trie树,对于目前使用的高级的数据结构进行了一些总结,以前学习数据结构的时候多少都有过一些的接触,大概的意思还是能听懂,下面有一个部分场景使用跳表来代替红黑树???跳表 为啥 redis 使用跳表(skiplist)而不是使用 red-black?–(如果单纯比较性能,跳跃表和红黑树可以说相差不大,但是加...原创 2018-02-26 14:50:33 · 871 阅读 · 0 评论