Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux

后序遍历求解判断一颗二叉树是否为平衡二叉树

后序遍历求解判断一颗二叉树是否为平衡二叉树

题目:输入一棵二叉树的根结点,判断该树是不是平衡二叉树。如果某二叉树中任意结点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。有了求二叉树的深度的经验之后再解决这个问题,我们很容易就能想到一个思路:在遍历树的每个结点的时候,调用函数TreeDepth得到它的左右子树的深度。如果每个结点的左右子树的深度相差都不超过1,按照定义它就是一棵平衡的二叉树。这种思路对应的代码如下:bool IsBalanced(BinaryTreeNode* pRoot) ...
算法复杂度为O(N) 的排序算法

算法复杂度为O(N) 的排序算法

题目:某公司有几万名员工,请完成一个时间复杂度为O(n)的算法对该公司员工的年龄作排序,可使用O(1)的辅助空间。分析:排序是面试时经常被提及的一类题目,我们也熟悉其中很多种算法,诸如插入排序、归并排序、冒泡排序,快速排序等等。这些排序的算法,要么是O(n2)的,要么是O(nlogn)的。可是这道题竟然要求是O(n)的,这里面到底有什么玄机呢?题目特别强调是对一个公司的员工的年龄作排序。员工的数目虽然有几万人,但这几万员工的年龄却只有几十种可能。上班早的人...
选择排序算法及其性能分析

选择排序算法及其性能分析

打算用python把所有的排序都写一遍。不过搞笑地是,才写了个简单的选择排序就遇到了不少问题。选择排序的基本原理这里就不讲了,可以参考维基百科。具体思路: 刚开始时按照自已的思路写的Slect_sorting1(),还停留在刚进大学的水平,主要问题是每次选择的时候都会交换此时找到的最小值,即产生了不必要的交换次数。 改进算法主要是将数组交换次数降到最低,Slect_sorting2()是中间出错的一个例子,贴出来有兴趣的可以看看,最后写出来的是Sl...
Spark1.4.1中sparkR的编译使用全过程

Spark1.4.1中sparkR的编译使用全过程

本文针对那些和我一样,对spark还挺熟悉但对R知之甚少甚至之前没听过的同学,在spark引入了sparkR后才开始零基础地开始学习使用。如果你本身对R和sparkR已经很熟悉了,就不用看了。本文主要包含的内容:spark1.4.1编译sparkR使用环境配置sparkR的第一个例子spark1.4.1编译首先从spark官网下载spark1.4.0或者1.4.1的源码,并解压。 要使用sparkR,必须要先用带有sparkR的参数的编译命令,把spark...
C++类中静态变量和静态方法使用介绍

C++类中静态变量和静态方法使用介绍

静态成员的提出是为了解决数据共享的问题。实现共享有许多方法,如:设置全局性的变量或对象是一种方法。但是,全局变量或对象是有局限性的。这一章里,我们主要讲述类的静态成员来实现数据的共享。 静态数据成员 在类中,静态成员可以实现多个对象之间的数据共享,并且使用静态数据成员还不会破坏隐藏的原则,即保证了安全性。因此,静态成员是类的所有对象中共享的成员,而不是某个对象的成员。 使用静态数据成员可以节省内存,因为它是所有对象所公有的,因此,对多个对象来说,静态...
C# 加密–RSA前端与后台的加密&解密

C# 加密–RSA前端与后台的加密&解密

1. 前言本问是根据网上很多文章的总结得到的。2. 介绍 RSA加密算法是一种非对称加密算法。 对极大整数做因数分解的难度决定了RSA算法的可靠性。换言之,对一极大整数做因数分解愈困难,RSA算法愈可靠。假如有人找到一种快速因数分解的算法的话,那么用RSA加密的信息的可靠性就肯定会极度下降。但找到这样的算法的可能性是非常小的。今天只有短的RSA钥匙才可能被强力方式解破。到2016年为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其钥匙的长度足够长,用...
AngularJS 初步认识

AngularJS 初步认识

代码稍多,请自行打开一、前言早已听说AngularJS的大名,并在很久前也编写过些小demo,但是都没有系统学习过。由于,在下个版本项目中用到了AngularJS,so,那就一起再来研究研究呗。说到,这个AngularJS,其核心就是对HTML标签的增强。何为HTML标签增强?其实就是使你能够用标签完成一部分页面逻辑,具体方式就是通过自定义标签、自定义属性等,这些HTML原生没有的标签/属性在ng中有一个名字:指令(directive)。至于说Angula...
AngularJS指令学习进阶

AngularJS指令学习进阶

紧接上篇“AngularJS 初步认识”http://www.linuxidc.com/Linux/2016-08/134158.htm一、前言在AngularJS中指令尤为重要且内容庞多,固单独提炼出来,梳理一番。如有错误,请不吝讲解。好了,言归正传,让我们一起走进Angular指令的世界。在上篇文章的前言部分提到,Angular的核心就是对HTML标签的增强。我们用到的诸如ng-app、ng-controller等等这些都是属于...
JavaScript正则表达式详解

JavaScript正则表达式详解

在JavaScript中,正则表达式由RegExp对象表示。RegExp对象呢,又可以通过直接量和构造函数RegExp两种方式创建,分别如下://直接量var re = /pattern/[g | i | m];//构造函数var re = new RegExp(["pattern", ["g" | "i" | "m"]]);其中,末尾的可选字符(g、i和m)分别表示: g: 模式执行一个全局匹配。简而言之,就是找到所有匹配,而不是在找到第一个之后就停止...
用TypeScript开发Vue——如何通过vue实例化对象访问实际ViewModel对象

用TypeScript开发Vue——如何通过vue实例化对象访问实际ViewModel对象

目录背景解决方案关于Vue中的计算属性类型TypeScript的强制类型声明语法强制类型声明的局限性计算属性类型的解决方案后记背景我个人很喜欢TypeScript也很喜欢Vue,但在两者共同使用的时候遇到一些问题。Vue的实例化对象代理了所有实际ViewModel对象,具体可参见官方文档(http://vuejs.org.cn/guide/instance.html#属性与方法)Vue的属性与方法:每个 Vue 实例都会代理其 data 对象里所有的属性实...
Linux Shell 通配符 / glob 模式

Linux Shell 通配符 / glob 模式

概念glob 模式(globbing)也被称之为 shell 通配符,名字的起源来自于 Unix V6 中的 /etc/glob (详见 man 文档)。glob 是一种特殊的模式匹配,最常见的是通配符拓展,也可以将 glob 模式设为精简了的正则表达式,在最新的 CentOS 7 中已经删除了 glob 的相关描述文档,删除的原因由于 glob 已经整合到了 shell 之中,然后就有了 shell 通配符。笔者在查阅资料的时候发现关于 glob 模式或...
解决UDT中内存下不去的问题

解决UDT中内存下不去的问题

使用UDT库,编写简单的网络通信程序,发现了一个问题,关闭一部分连接后,程序占用内存并没有变化。比如先连接500个,再连接另500个,先关掉后面500个,程序占用内存降一半,再关掉500个,程序占用内存降到0.1。然而,如果先关掉前面500个,程序占用内存不会发生变化,只有等再关掉后面500个,程序内存才会降到0.1。换个顺序就降不了,这很奇怪,很“玄学”。跟踪代码至底层,该有的释放都有,这是为什么?灵机一动想到可能与linux内存...
<< 3811 3812 3813 3814 3815 3816 3817 3818 3819 3820 >>