2011年10月25日
摘要: 转自:http://zhedahht.blog.163.com/blog/static/25411174201142733927831/ 题目:输入一棵二叉树的根结点,判断该树是不是平衡二叉树。如果某二叉树中任意结点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。 在本系列博客的第27题,我们曾介绍过如何求二叉树的深度。有了求二叉树的深度的经验之后再解决这个问题,我们很容易就能想到一个思路:在遍历树的每个结点的时候,调用函数TreeDepth得到它的左右子树的深度,如果每个结点的左右子树的深度相差都不超过1,按照定义它就是一棵平衡的二叉树。这种思路对应的代码如下: 1 bool Is. 阅读全文
posted @ 2011-10-25 23:34 白草黒尖 阅读(344) 评论(0) 推荐(1) 编辑
摘要: http://zhedahht.blog.163.com/blog/static/2541117420116135376632/ 题目:在数组中,数字减去它右边的数字得到一个数对之差,求所有数对之差的最大值,如数组{2, 4, 1, 16, 7, 5, 11, 9}中,数对之差的最大值是11,是16减去5的结果。 分析:看到这个题目,很多人的第一反应是找到这个数组的最大值和最小值,然后觉得最大值减去最小值就是最终的结果。这种思路忽略了题目中很重要的一点:数对之差是一个数字减去它右边的数字。由于我们无法保证最大值一定位于数组的左边,因此这个思路不管用。 于是我们接下来可以想到让每一个数字逐个减. 阅读全文
posted @ 2011-10-25 23:04 白草黒尖 阅读(314) 评论(0) 推荐(1) 编辑
摘要: 内存管理是一个比较繁琐的问题,C++中有两个实现方案:垃圾回收机制、智能指针。一个智能指针就是一个C++的对象,这对象的行为像一个指针,但是它却可以在其不需要的时候(不是一个精确的定义,如:局部变量退出函数作用域、类的对象被析构...等)自动删除。注意:(1)声明一个智能指针时要立即给它实例化,且一定不能手动释放它;(2)..._ptr<T>不是T*类型,所以声明时要..._ptr<T>而不是...ptr<T*>,不能把T*型的指针赋值给它,且不能些ptr=NULL,而用ptr.reset()代替;(3)不能循环引用;(4)不要声明临时的shared_ptr 阅读全文
posted @ 2011-10-25 16:34 白草黒尖 阅读(508) 评论(0) 推荐(0) 编辑
  2011年10月24日
摘要: 前言:关于多态,关于 C 多态 (polymorphism) 一词最初来源于希腊语 polumorphos,含义是具有多种形式或形态的情形。在程序设计领域,一个广泛认可的定义是“一种将不同的特殊行为和单个泛化记号相关联的能力”。 然而在人们的直观感觉中,多态的含义大约等同于“同一个方法对于不同类型的输入参数均能做出正确的处理过程,并给出人们所期望获得的结果”,也许这正体现 了人们对于多态性所能达到的效果所寄予的期望:使程序能够做到越来越智能化,越来越易于使用,越来越能够使设计者透过形形色色的表象看到代码所要触及到的 问题本质。 作为读者的你或许对于面向对象编程已有着精深的见解,或许对于多态的方 阅读全文
posted @ 2011-10-24 12:52 白草黒尖 阅读(1522) 评论(0) 推荐(0) 编辑
  2011年10月23日
摘要: 1,防止一个头文件被重复包含 #ifndef BODYDEF_H #define BODYDEF_H //头文件内容 #endif 2,得到指定地址上的一个字节或字 #define MEM_B( x ) ( *( (byte *) (x) ) ) #define MEM_W( x ) ( *( (word *) (x) ) ) 3,得到一个field在结构体(struct)中的偏移量 #define FPOS( type, field ) ( (dword) &(( type *) 0)-> field )4,得到一个结构体中field所占用的字节数 #def... 阅读全文
posted @ 2011-10-23 22:15 白草黒尖 阅读(676) 评论(0) 推荐(0) 编辑
摘要: 某一天,你拨我的电话号码,语音告诉你我已经停机。答应我不可以难过,不可以失落;不可以想我,更加不要记得有这样一个我。某一天,你的手机不再频繁的响起,请不要等待,不要期盼,更加不要想找到我,只有看到这样的一个你,我才可以放心的离开。 某一天,你的耳边不再有人说烦人,讨厌。不再有人固执的说自己永远是正确的,不再有人粗鲁的对你发脾气。不再有人和你讨价还价的想多讲几分钟电话,不再有人在挂电话之前吵着要你亲亲和抱抱。这样的一个我消失了,你会难过吗? 某一天,你的短信收件箱里,不再有人可怜兮兮的说又梦到你了,不再有人恶狠狠的说再不和我说话我就揍你拉,不再有人撒娇的说想你了,不再有人在做错事情之 ... 阅读全文
posted @ 2011-10-23 00:09 白草黒尖 阅读(257) 评论(0) 推荐(0) 编辑
  2011年10月22日
摘要: 先看看如下的示例代码:package flowcontrol; 1. 2. public class SwitchCase { 3. // first default 4. public static void testFirst(int i) { 5. switch (i) { 6. default: 7. System.out.println("default");// first default 8. case 1: ... 阅读全文
posted @ 2011-10-22 16:00 白草黒尖 阅读(2943) 评论(0) 推荐(0) 编辑
摘要: 大学毕业生经过了笔试、面试的重重考验,终于拿到了offer,下一步要面临的问题就是:签约。而如果有的同学之前已经跟其它单位签约,现在又想和新单位签约,那么又涉及到一个问题:违约。本篇主要讲讲应届生签约最应该九个注意事项。一般来讲,签约分为两种:签offer和签三方协议。其中,前者对个人及企业的约束效力远不及后者。1、签offeroffer一般是单位提供给你的一个录用意向,以合同的形式提供给你,要求你在上面签字,表明你接受对方的录用意向,愿意到单位工作。所以,这实际上相当于个人和企业签署的一个合同。一般这种形式在外企中比较常见,另外就是那些不给解决户口的单位,通常也会跟你签署一个这样的offe. 阅读全文
posted @ 2011-10-22 12:22 白草黒尖 阅读(475) 评论(0) 推荐(0) 编辑
  2011年10月21日
摘要: 有不限数目的1、5、10、20、50面额的纸币,有多少种方法凑出100元? 笨办法:暴力枚举~ 1 #include<iostream> 2 #include<cstring> 3 using namespace std; 4 5 const int Len = 5; 6 int ans = 0; 7 int m[Len] = {50, 20, 10, 5, 1}; 8 int total[Len] = {2, 5, 10, 20, 100}; 9 int n[Len];10 int sum = 100;11 12 void GetNum(int m[], int n[ 阅读全文
posted @ 2011-10-21 14:44 白草黒尖 阅读(300) 评论(0) 推荐(0) 编辑
  2011年10月15日
摘要: 在系统维护的过程中,随时可能有需要查看 CPU 使用率,并根据相应信息分析系统状况的需要。在 CentOS 中,可以通过 top 命令来查看 CPU 使用状况。运行 top 命令后,CPU 使用状态会以全屏的方式显示,并且会处在对话的模式 -- 用基于 top 的命令,可以控制显示方式等等。退出 top 的命令为 q (在 top 运行中敲 q 键一次)。 操作实例:在命令行中输入 “top”,即可启动 top top 的全屏对话模式可分为3部分:系统信息栏、命令输入栏、进程列表栏。第一部分 -- 最上部的 系统信息栏 : 第一行(top): “00:11:04”为系统当前时刻;... 阅读全文
posted @ 2011-10-15 21:56 白草黒尖 阅读(381) 评论(0) 推荐(0) 编辑