数据结构与算法
厚积_薄发
梦想还是要有的,万一实现了呢?
Stay hungry, stay foolish. --Steve Jobs
展开
-
二叉树中完全二叉树、满二叉树、二叉排序树、平衡二叉树的区别和联系
1,完全二叉树:只有最下面的两层结点度小于2,并且最下面一层的结点都集中在该层最左边的若干位置。2,满二叉树:是一颗完全二叉树;除了叶结点外每一个结点都有左右子叶且叶结点都处在最底层。深度为k,且有2的(k)次方-1个节点。3,堆:是一颗完全二叉树;大根堆:左右子树的结点值都小于根结点值,左右子树都是大根堆。小根堆:左转载 2016-08-02 14:52:38 · 1846 阅读 · 0 评论 -
一致性HASH算法
基本场景比如你有 N 个 cache 服务器(后面简称 cache ),那么如何将一个对象 object 映射到 N 个 cache 上呢,你很可能会采用类似下面的通用方法计算 object 的 hash 值,然后均匀的映射到到 N 个 cache ;求余算法: hash(object)%N一切都运行正常,再考虑如下的两种情况;1 一个 cache 服务器 m转载 2017-01-12 10:30:02 · 384 阅读 · 0 评论 -
基数排序详解
简介基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort原理将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后, 数列就变成一个有序序列。步骤第一步以LSD为例,转载 2016-11-10 00:21:25 · 514 阅读 · 0 评论 -
(华为笔试)删数 约瑟夫环问题
删数热度指数:2641时间限制:1秒空间限制:32768K本题知识点: 模拟 算法知识视频讲解题目描述有一个数组a[N]顺序存放0~N-1,要求每隔两个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置。以8个数(N=7)为例:{0,1,2,3,4,5,6,7},0->1->2(删除)->3->4->5(删除)->6->7->0原创 2016-10-04 15:06:27 · 2729 阅读 · 0 评论 -
Leetcode 101. Symmetric Tree 判断二叉树是否对称,注意写在两个方法中,递归时注意空的判断
Leetcode 101. Symmetric TreeGiven a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).For example, this binary tree [1,2,2,3,4,4,3] is symmetric:原创 2016-10-04 22:26:45 · 465 阅读 · 0 评论 -
整数转16进制字符串,不用系统函数
伪代码: ConvertInt2Hex: dim n,hexStr loop: if n == 0 break; dim tmp = n % 16 if tmp >= 0 && tmp <= 9 hexStr <- hexStr.append('0' + tmp) else hexStr <- hexStr原创 2016-10-16 08:37:33 · 3561 阅读 · 0 评论 -
八大常用排序算法详细分析 包括复杂度,原理和实现
八大常用排序算法详细分析 包括复杂度,原理和实现如下:1. 冒泡排序1.1 算法原理:S1:从待排序序列的起始位置开始,从前往后依次比较各个位置和其后一位置的大小并执行S2。 S2:如果当前位置的值大于其后一位置的值,就把他俩的值交换(完成一次全序列比较后,序列最后位置的值即此序列最大值,所以其不需要再参与冒泡)。 S3:将序列的最后位置从待排序序列中移除。若移除后的待排序序列不为空则继续执行S1,否则冒泡结束。1.2 算法实原创 2016-10-09 22:56:26 · 36557 阅读 · 7 评论 -
计数排序,传说中时间复杂度O(n+k)的排序算法
基本思想假设数序列中小于元素a的个数为n,则直接把a放到第n+1个位置上。当存在几个相同的元素时要做适当的调整,因为不能把所有的元素放到同一个位置上。计数排序假设输入的元素都是0到k之间的整数。回到顶部参考代码#include void COUNTINGSORT(int *A, int *B, int array_size, int k){原创 2016-09-06 12:47:16 · 4896 阅读 · 1 评论 -
二叉树,完全二叉树,满二叉树,二叉排序树,平衡二叉树,红黑树,B数,B-树,B+树,B*树(二)
二叉树,完全二叉树,满二叉树,二叉排序树,平衡二叉树,红黑树,B数,B-树,B+树,B*树(一):http://blog.csdn.net/yuxin6866/article/details/52327328BST树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right); 2.所有结点存储一个转载 2016-08-26 13:08:54 · 3222 阅读 · 0 评论 -
二叉树,完全二叉树,满二叉树,二叉排序树,平衡二叉树,红黑树,B数,B-树,B+树,B*树(一)
二叉树二叉树:二叉树是每个节点最多有两个子树的树结构;是n(n>=0)个结点的有限集合,它或者是空树(n=0),或者是由一个根结点及两颗互不相交的、分别称为左子树和右子树的二叉树所组成。完全二叉树完全二叉树:除最后一层外,每一层上的结点数均达到最大值;在最后一层上只缺少右边的若干结点;树中所含的n个节点和满二叉树中编号为1至n的节点一一对应转载 2016-08-26 12:54:29 · 6354 阅读 · 1 评论 -
轻松搞定面试中的二叉树题目
转自http://blog.csdn.net/walkinginthewind/article/details/7518888树是一种比较重要的数据结构,尤其是二叉树。二叉树是一种特殊的树,在二叉树中每个节点最多有两个子节点,一般称为左子节点和右子节点(或左孩子和右孩子),并且二叉树的子树有左右之分,其次序不能任意颠倒。二叉树是递归定义的,因此,与二叉树有关的题目基本都可以用递归思转载 2016-08-26 13:00:02 · 535 阅读 · 0 评论 -
这个动态规划分析的很详细(转载)
动态规划动态规划转自:http://www.cnblogs.com/raichen/p/5772056.html通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常常适用于有重叠子问题和最优子结构性质的问题。基本思想若要解一个给定问题,我们需要解其不同部分(即子问题),再合并子问题的解以得出原问题的解。 通常许多子问题非常相似,为此动态规划法试图仅仅解决每转载 2016-09-11 23:48:29 · 14965 阅读 · 1 评论 -
找到数组中只出现一次的数字
找到数组中只出现一次的数字/** * 数组中有两个出现一次的数字,其他数字都出现两次,找出这两个数字 * @param array * @param num1 * @param num2 */ public static void findNumsAppearOnce(int [] array,int num1[] ,转载 2016-09-11 09:09:06 · 629 阅读 · 0 评论 -
二叉树的非递归遍历
二叉树的非递归遍历 二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。而对于树的遍历若采用非递归的方法,就要采用栈去模拟实现。在三种遍历中,前序和中序遍历的非递归算法都很容易实现,非递归后序遍历实现起来相对来说转载 2016-09-11 09:05:02 · 455 阅读 · 0 评论 -
大数模板 大数加法,大数减法,大数乘法,大数除法,大数比较等操作
实现了一个大数模板类,包括加减乘除,求余,比较大小等等操作。#include #include #include #include using namespace std; #define MAXN 9999#define MAXSIZE 10#define DLEN 4class CalBigNum{ private: int a[500]; //可以控制大原创 2016-08-02 22:12:00 · 699 阅读 · 0 评论