上一页 1 ··· 14 15 16 17 18 19 20 21 22 ··· 27 下一页
摘要: 一、二叉树介绍 二叉查找树(Binary Search Tree,BST),又称二叉排序树,也称二叉搜索树,它或者是一颗空树,或者具有如下性质的树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值;若它的右子树不为空,则右子树上所有节点的值都大于根节点的值。它的左右子树也分别为二叉查找树。 阅读全文
posted @ 2019-02-19 14:23 |旧市拾荒| 阅读(545) 评论(0) 推荐(0) 编辑
摘要: 一、二叉树介绍 因为任何树都可以转化为二叉树进行处理,并且二叉树适合计算机的存储和处理,因此在数据结构中二叉树是研究的重点。 每个结点的度均不超过 2 的有序树,称为二叉树( binary tree)。 与树的递归定义类似,二叉树的递归定义如下:二叉树或者是一棵空树,或者是一棵由一个根结点和两棵互不 阅读全文
posted @ 2019-02-18 10:17 |旧市拾荒| 阅读(358) 评论(0) 推荐(0) 编辑
摘要: 一、树的基本知识 树是一种数据结构,它是由n(n>=1)个有限结点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:每个结点有零个或多个子结点;没有父结点的结点称为根结点;每一个非根结点有且只有一个父结点;除了根结点外,每个子结 阅读全文
posted @ 2019-02-17 15:53 |旧市拾荒| 阅读(1383) 评论(0) 推荐(1) 编辑
摘要: 一、分布式算法 在做服务器负载均衡时候可供选择的负载均衡的算法有很多,包括: 轮循算法(Round Robin)、哈希算法(HASH)、最少连接算法(Least Connection)、响应速度算法(Response Time)、加权法(Weighted )等。其中哈希算法是最为常用的算法。 典型的 阅读全文
posted @ 2019-02-17 11:44 |旧市拾荒| 阅读(298) 评论(0) 推荐(0) 编辑
摘要: 一、布隆过滤器: 布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难。布隆过滤器是与哈希算法是相关的, 阅读全文
posted @ 2019-02-17 00:39 |旧市拾荒| 阅读(595) 评论(0) 推荐(0) 编辑
摘要: 一、Map接口类: 1 import java.util.Iterator; 2 3 public interface IMap<K, V> { 4 /* 清除所有键值对 */ 5 void clear(); 6 7 /* key是否已经存在 */ 8 boolean containsKey(K k 阅读全文
posted @ 2019-02-16 22:43 |旧市拾荒| 阅读(321) 评论(0) 推荐(0) 编辑
摘要: Hash简介: Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确 阅读全文
posted @ 2019-02-16 17:52 |旧市拾荒| 阅读(364) 评论(0) 推荐(0) 编辑
摘要: 题目一: 请编写一个程序,按升序对栈进行排序(即最大元素位于栈顶),要求最多只能使用一个额外的栈存放临时数据,但不得将元素复制到别的数据结构中。给定一个int[] numbers,其中第一个元素为栈顶,请返回排序后的栈。请注意这是一个栈,意味着排序过程中你只能访问到第一个元素。 测试样例:[1,2, 阅读全文
posted @ 2019-02-16 16:45 |旧市拾荒| 阅读(297) 评论(0) 推荐(0) 编辑
摘要: 题目一: 请设计一个栈,除pop与push方法,还支持min方法,可返回栈元素中的最小值。push、pop和min三个方法的时间复杂度必须为O(1)。 思路:题目要求时间复杂度为O(1),所以肯定不能用循环遍历的方式去解决,于是我们想到用空间换时间的方式去解决,如果我们已经维护好一个已经排好序的栈的 阅读全文
posted @ 2019-02-16 15:45 |旧市拾荒| 阅读(388) 评论(0) 推荐(0) 编辑
摘要: 栈的实现: 栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶(top),相对地,把另一端称为栈底(bottom)。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈 阅读全文
posted @ 2019-02-16 10:58 |旧市拾荒| 阅读(889) 评论(0) 推荐(0) 编辑
摘要: 题目: 给定一个链表,检查链表是否回文。 思路:一种是将链表进行翻转(这里可以使用递归来解决,也可以使用非递归)然后翻转后的后半部分与链表的前半部分进行比较来进行判断,第二种是将先找到链表的中间位置,这里可以使用快慢指针来进行,快指针一次走两步,慢指针一次走一步,那么等到快指针走到末尾的时候那么慢指 阅读全文
posted @ 2019-02-16 10:01 |旧市拾荒| 阅读(372) 评论(0) 推荐(0) 编辑
摘要: 题目一: 编写代码,以给定值x为基准将链表分为两部分,所有小于x的结点排在大于或等于x的结点之前。给定一个链表的头结点 ListNode * pHead,请返回重新后的链表的头指针。注意:分割以后原来的数据顺序不变,不要开辟新的空间,即不要新建节点。比如 5 6 3 2 7 以 3 为基准分区后为2 阅读全文
posted @ 2019-02-16 09:35 |旧市拾荒| 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 题目一: 删除链表中的重复元素。 思路:一是利用哈希表(HashSet),哈希表特别适合于判断集合中是否有重复的元素。二是直接使用遍历链表,使用两层for循环去遍历再来找出重复的元素。下面给出第一种方法的代码。 1 import java.util.HashSet; 2 3 public class 阅读全文
posted @ 2019-02-15 22:36 |旧市拾荒| 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 需要考虑以下问题: 1、桶的大小,这里我们可以根据输入的元素的个数来确定桶的大小。 2、怎么样确定当前元素进入哪一个桶,这里我们使用到的是通过一个哈希函数来进行计算。 3、因为输入的数据是随机的,所以有可能在一个桶中分布着好几个数据,那么怎么样维持在一个桶中的顺序呢?因为涉及到桶中元素的数量的不确定 阅读全文
posted @ 2019-02-14 11:19 |旧市拾荒| 阅读(480) 评论(0) 推荐(0) 编辑
摘要: 一、定义MyList接口,包含列表常见方法: 1 import java.util.Iterator; 2 3 /** 4 * 线性表(列表)的接口定义 5 */ 6 public interface MyList<T> extends Iterator<T> { 7 8 /** 新增一个元素 */ 阅读全文
posted @ 2019-02-14 10:09 |旧市拾荒| 阅读(541) 评论(0) 推荐(0) 编辑
上一页 1 ··· 14 15 16 17 18 19 20 21 22 ··· 27 下一页