- 博客(17)
- 资源 (7)
- 收藏
- 关注
原创 伸展树 - 二叉搜索树的扩展2
目录伸展树的介绍伸展树的C实现1 节点定义2 旋转3 伸展树的伸展4 搜索4 伸展树的插入和删除全部代码和参考资料1. 伸展树的介绍伸展树(splay tree)是一种搜索二叉树,它能在O(log n)O(log\ n)内完成插入、查找和删除操作。 (1)伸展树满足搜索二叉树的性质,左子节点小于根节点,右子节点大于等于根节点。 (2)伸展树独有特点:当某个节点被访问时,伸展树会通
2015-04-30 10:47:12 1316
原创 AVL平衡树 - 二叉搜索树的扩展1
1. AVL树的介绍AVL树是根据它的发明者G.M. Adelson-Velsky和E.M. Landis命名的。 它是最先发明的自平衡二叉查找树,也被称为高度平衡树。相比于”二叉查找树”,它的特点是:AVL树中任何节点的两个子树的高度最大差别为1。 如上图(左):非AVL树,如对节点9,左子树高度为0,右子树高
2015-04-28 20:08:27 864
原创 一次永久解决cmd窗口汉字显示乱码
对于编译出的程序,在 cmd 和 power shell 运行时都不能正确显示汉字。 网上查,可以再命令窗口修改: 1、打开CMD.exe命令行窗口 2、通过 chcp命令改变代码页,UTF-8的代码页为65001 chcp 65001 执行该操作后,代码页就被变成UTF-8了。但是,在窗口中仍旧不能正确显示UTF-8字符。在当前窗口的确可以解决问题,但是重
2015-04-28 15:09:38 71848 11
原创 leetcode 7. 在有序可重复数组旋转后搜索 Search in Rotated Sorted Array II
Search in Rotated Sorted Array IIFollow up for "Search in Rotated Sorted Array":What if duplicates are allowed?Would this affect the run-time complexity? How and why?Write a function to determine if a
2015-04-27 16:27:43 848
原创 leetcode 6. 在有序数组旋转后搜索 Search in Rotated Sorted Array
Search in Rotated Sorted Array 难度:HardSuppose a sorted array is rotated at some pivot unknown to you beforehand.(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).You are given a target value to search
2015-04-27 15:36:11 1007
原创 leetcode 5. 两个链表逐个元素相加 Add Two Numbers
问题:Add Two Numbers 难度-MediumYou are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two nu
2015-04-25 16:23:07 1539
原创 leetcode 4. 移除有序数组中的重复元素 Remove Duplicates from Sorted Array
问题:Remove Duplicates from Sorted Array II 难度:mediumFollow up for “Remove Duplicates”: What if duplicates are allowed at most twice?For example, Given sorted array A = [1,1,1,2,2,3],Your function s
2015-04-25 10:53:48 692
原创 leetcode 3. 移除链表的倒数第n个节点 Remove Nth Node From End of List
问题:Remove Nth Node From End of List 难度:mediumGiven a linked list, remove the nth node from the end of list and return its head.For example,Given linked list: 1->2->3->4->5, and n = 2.After removing t
2015-04-25 09:40:07 594
原创 leetcode 2. 从有序链表和数组中移出重复元素 Remove Duplicates
1. 链表 Remove Duplicates from Sorted ListGiven a sorted linked list, delete all duplicates such that each element appear only once.For example, Given 1->1->2, return 1->2. Given 1->1->2->3->3, return
2015-04-24 16:11:41 1161
原创 leetcode 1: 找出两个数相加等于给定数 two sum
问题描述对于一个给定的数组,找出2个数,它们满足2个数的和等于一个特定的数,返回这两个数的索引。(从1开始) Given an array of integers, find two numbers such that they add up to a specific target number.The function twoSum should return indices of the t
2015-04-24 11:08:35 3731
原创 散列(2)线性探测法和双重散列法
接上篇 散列的简要描述和链地址法 解决散列冲突的方法:1. 线性探测法如果我们能够预测将要存入表中元素的数目,而且我们有足够的内存空间可以容纳带有空闲空间的所有关键字,那么使用链地址法是不值得的。我们依靠空的存储空间解决冲突:设计表长M大于元素数目N,开放地址法,最简单的开放地址法是线性探测法:初始化该符号表的实现将元素保存到大小是元素个数两倍的散列表中。void HashTableInit(in
2015-04-22 17:08:16 20431 1
原创 散列(1) 简要描述和链地址法
1. 散列的定义犹如关键字索引,我们把带有关键字ii的元素存储到表的第ii个位置,使其可以直接访问。关键字索引的算法不是比较关键字值进行比较,而是以关键字值作为数组的下标索引。我们对关键字索引搜索算法进行扩展,得到散列(Hash)搜索算法:散列(Hash)搜索算法 试图通过算术运算将关键字的值转换成表中的地址来直接引用表中的元素;而不是像在其他数据结构中比较搜索关键字的值与元素中关键字的值来实现搜索
2015-04-22 15:42:06 2765
转载 c++多个源文件共用一个全局变量(extern 的用法)
例子: 头文件:state.h 源文件:state.cpp 其它源文件:t1.cpp t2.cpp t3.cpp, 这些源文件都包含头文件state.h。 需要定义一个全局变量供这些源文件中使用:方法如下 1、在 state.h声明全局变量: extern int a; 2、在state.cpp中定义该全局变量:int a = 10; 这样其它源文件就可以使用该变量啦
2015-04-15 09:34:23 2796
原创 搜索(2):二叉搜索树 BST 和 根插法
二分搜索二叉搜索树1 二叉搜索树的初始化插入搜索2 使用BST排序3 BST上根节点的插入insert4 BST上的选择select操作划分操作5 BST上的删除delete操作6 两棵BST的连接joinBST的优缺点参考资料和所有代码1. 二分搜索将分治法应用于基于数组符号表的顺序搜索中,可以大大降低大型数据集合的搜索时间。 把数据集合分成两部分,确定搜索关键字属于哪一部分
2015-04-14 10:24:34 1704
原创 搜索(1):符号表
符号表的概念符号表的顺序搜索1 基于有序数组的符号表2 基于无序链表的符号表参考资料1. 符号表的概念搜索:我们把处理的数据划分为记录或数据项(item),每个数据项都有一个用于搜索的关键字(key)。搜索的目标是找出目标关键字所匹配的数据项。搜索的目的是访问这个数据项(不仅是关键字)中的信息。 符号表:它是一种数据结构,其中数据项含有关键字。它支持两个基本的操作:插入一个新的数据项和搜
2015-04-14 10:21:00 1063
转载 优先队列之 二项堆
1 定义二项堆(Binomial Heap): 二项堆(Binomial Heap)是二项树(Binomial Tree)的集合(collection),所以势必要先简要介绍下二项树。关于堆(最小堆)的相关知识,作者已经在堆排序有介绍可以点击查看,这里就不多枚举了。 二项树(Binomial Tree): 二项树(Binomial Tree)是一组多分支树的序列,二项树
2015-04-08 10:26:53 1371
原创 优先队列和堆排序
优先队列和堆排序标签(空格分隔): 排序算法 数据结构优先队列和堆排序优先队列堆1 基于堆的算法初始化自底向上堆化自顶向下堆化插入删除一项2 堆排序优先队列全部代码1 优先队列普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。优先队列具有最高级先出 (largest-in,first-
2015-04-08 09:55:00 1557
动态规划四个经典问题的c++实现
2015-06-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人