
基础知识积累
阿布哥
这个作者很懒,什么都没留下…
展开
-
LeetCode007:WordLadder
参考:http://www.cnblogs.com/springfor/p/3893499.html题目:Given two words (start and end), and a dictionary, find the length of shortest transformation sequence from start to end, such that:O原创 2014-08-07 16:15:03 · 558 阅读 · 0 评论 -
阿布学排序之归并排序
package merge;import javax.lang.model.element.Element;/** * 归并排序: * 归并排序的效率是比较高的,设数列长为N,将数列分开成小数列一共需要logN步,每步都是一个合并有序数列的过程,时间复杂度为O(N),故一共为 * O(NlogN). * @author AbuGe * */public class Merge原创 2014-05-19 10:52:33 · 773 阅读 · 0 评论 -
字符串转十六进制与十六进制转字符串示例
package stringtohex;/** * java中使用16位(2个字节)的Unicode字符集编码作为字符编码格式。 * char类型的值也可直接作为整数类型的值来使用,但它是一个16位的无符号整数,即全部是正数,范围是0-65535 * 如果把0-65535内的一个int整数赋给char类型变量,系统会把这个int整数当成char类型变量 * @author AbuGe原创 2014-05-17 09:55:29 · 3585 阅读 · 0 评论 -
判断一个字符串中的字符是否唯一(只用基本数据结构)
算法练习:判断一个字符串中的字符是否唯一(只用基本数据结构)view sourceprint?001package codinginterview;002 003/**004 *005 * 实现一个算法来判断一个字符串中的字符是否唯一(即没有重复).006 * 不能使用额外的数据结构。 (即只使用基本的数据结构)007 * @author mingdong.che转载 2014-04-21 17:02:18 · 1226 阅读 · 0 评论 -
POJ1035 Spell checker
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.Arrays;import java.util.List;imp原创 2014-05-07 17:46:38 · 817 阅读 · 0 评论 -
第六届华为创新杯编程大赛-----电话号码本的设计
package contest;import java.util.*;import java.io.*;public class Main { public static void main(String[] args) throws IOException { //用一个Map集合存储电话本中的姓名和电话号码 HashMap map = new LinkedHashMap()原创 2014-05-05 20:28:12 · 1066 阅读 · 0 评论 -
2014年4月12号腾讯笔试题
有问题请讨论1. 关于二叉树,下面说法正确的是(BC)A. 对于N个节点的二叉树,其高度为nlog2n;B. 一个具有1025个节点的二叉树,其高度范围在11~1025之间C. 二叉树的先序遍历是EFHIGJK,中序遍历为HFIEJKG,该二叉树的右子树的根为GD. 二叉树中至少有一个节点的度为22. 假设函数f1的时间复杂度O(n),那么f1*f1的时间转载 2014-04-16 15:11:47 · 2461 阅读 · 3 评论 -
2014年阿里、腾讯的实习生笔试题分析
笔者经历了2014年阿里、腾讯的实习生招聘,有些题目,做完了,还以为自己对了,回来编程序跑一下,才知道是陷阱。觉得有必要总结一下哈,在此感谢一下参与讨论的筒子们,小芳,静儿。陷阱分类:(1)指针与字符串7. 阅读下面代码,程序会打印出来的值是(D)------------------------------(腾讯2014实习生笔试)void f(char **p){ *p +=转载 2014-04-16 15:09:49 · 1235 阅读 · 1 评论 -
虚函数精解
在某基类中声明为 virtual 并在一个或多个派生类中被重新定 义的成员函数,virtual 函数返回类型 函数名(参数表) {函数体;},实现多态性,通过1定义编辑虚函数必须是基类的非静态成员函数,其访问权限可以是private或protected或public,在基类的类定义中定义虚函数的一般形式:class基类名{.......转载 2014-04-15 20:06:33 · 573 阅读 · 0 评论 -
malloc函数详解
一、原型:extern void *malloc(unsigned int num_bytes);头文件:#include 或 #include (注意:alloc.h 与 malloc.h 的内容是完全一致的。)功能:分配长度为num_bytes字节的内存块说明:如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释转载 2014-04-16 11:41:27 · 703 阅读 · 0 评论 -
sizeof超精辟解读
sizeof,终极无惑(上)分类: 4. C/C++ 2004-07-28 22:34 16300人阅读 评论(21) 收藏 举报编译器structc存储structureobject0. 前向声明sizeof,一个其貌不扬的家伙,引无数菜鸟竟折腰,小虾我当初也没少犯迷糊,秉着“辛苦我一个,幸福千万人”的伟大思想,我决定将其尽可能详细的总结一下。但当我总结的时候才发现,这个问题既可以转载 2014-04-16 11:12:25 · 548 阅读 · 0 评论 -
C++中的enum详解
如果一个变量你需要几种可能存在的值,那么就可以被定义成为枚举类型。之所以叫枚举就是说将变量或者叫对象可能存在的情况也可以说是可能的值一一例举出来。举个例子来说明一吧,为了让大家更明白一点,比如一个铅笔盒中有一支笔,但在没有打开之前你并不知道它是什么笔,可能是铅笔也可能是钢笔,这里有两种可能,那么你就可以定义一个枚举类型来表示它!enum box{pencil,pen};//这里你就转载 2014-04-29 17:50:09 · 1065 阅读 · 0 评论 -
Java中@Override的作用
@Override是伪代码,表示重写(当然不写也可以),不过写上有如下好处: 1、可以当注释用,方便阅读;2、编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错。比如你如果没写@Override而你下面的方法名又写错了,这时你的编译器是可以通过的(它以为这个方法是你的子类中自己增加的方法)。 举例:在重写父类的onCreate时,在方法前面转载 2014-02-17 17:02:46 · 585 阅读 · 0 评论 -
阿布学排序之快速排序
package quicksort;/** * 快速排序是一种划分交换排序,采用了分治策略 * 思想: * 1、先从数列中取出一个数作为基准数 * 2、将比这个数大的数全都放到它的左边,比它小的全都放它右边 * 3、再对左右区间重复第二步,直到各区间只有一个数 * @author AbuGe * 例: * 0 1 2 3 4 5 6 7 8 9 * 72 6 5原创 2014-05-16 11:26:18 · 434 阅读 · 0 评论 -
阿布学排序之希尔排序
package com.abuge;/** * 希尔排序: * 实质:分组插入排序,又称为缩小增量排序 * 思想: * 先将整个待排元素序列分割成若干个子序列(由相隔某个"增量"的元素组成的)分别进行直接插入排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行直接插入排序。 * 因为直接插入排序是在基本有序的情况下(接近最好情况)效率是很高的。 * 第一种方法(把一组元原创 2014-06-23 16:08:43 · 489 阅读 · 0 评论 -
面试题33:把数组排成最小的数
package com.abuge;/** * 面试题33:把数组排成最小的数 * 输入一个正整数数组,把数组里所有数字拼接成一个数,打印成能拼接出所有数字中最小的一个。 * 例如输入数组{3, 32, 321}则打印三个数字能排成的最小数字 * 思路: * 1、将整型数转换为字符串,可以解决隐形大数问题 * 2、制定比较新规则 */import java.util.Arrays原创 2014-09-04 11:26:13 · 563 阅读 · 0 评论 -
华为机试题——正数减法
package com.abuge;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.math.BigDecimal;import org.junit.Test;/** * 3 正数减法 问题描述: 两个任意长度的原创 2014-08-01 13:32:42 · 633 阅读 · 0 评论 -
华为机试题——字符串处理
package com.abuge;import java.util.Comparator;import java.util.TreeSet;import org.junit.Test;/** * 2 字符串处理转换 问题描述: 在给定字符串中找出单词( “单词”由大写字母和小写字母字符构成,其他非字母字符视为单词的间隔,如空格、问号、数字等等; 另外单个字母不算单词原创 2014-07-31 15:04:02 · 706 阅读 · 0 评论 -
华为机试题——字符串循环转换
package com.abuge;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.UnsupportedEncodingException;import java.util.HashMap;import org.juni原创 2014-07-31 15:02:20 · 754 阅读 · 1 评论 -
Python第一天:初始Python
原创 2014-06-20 09:48:04 · 723 阅读 · 0 评论 -
java中使用键盘输入数据集锦
第一种方法:(最好用)//运用scanner类/*new是创建一个Scanner类的对象,但是在创建对象时需要用System.in作为它的参数,也可以将Scanner看作是System.in对象的支持者,System.in取得用户输入以后,交给Scanner来做一些处理。Scanner类提供了多个方法:next();取得一个字符串nextInt();将取得的字符串转换成int型整数原创 2014-01-15 21:36:31 · 1740 阅读 · 0 评论 -
Eclipse常用快捷键小结
原创 2014-06-03 11:52:23 · 504 阅读 · 0 评论 -
阿布学排序之直接插入排序
package insertsort;/** * 需求:直接插入排序 * 思想:每次将一个待排序的记录按其关键字大小插入到前面已经排好序的子序列中的适当位置,直到全部记录插入完成为止 * 步骤:设数组为a[0..n-1] * 1、初始时,a[0]自成一个有序区,无序区为a[1...n-1]。令i=1 * 2、将a[i]并入到当前的有序区a[0...i-1]中形成a[0...i]的有序区原创 2014-06-02 17:09:44 · 508 阅读 · 0 评论 -
阿布学排序之直接选择排序
package select;/** * 需求:直接选择排序 * 方法:将数据分为有序区和无序区,然后从无序区选一个最小元素,放在有序区的最后 * 步骤:设数组为a[0...n-1] * 1、初始时,数组全为无序区a[0...n-1],令i=0; * 2、在无序区a[i...n-1]中选择一个最小元素,并将其与a[i],交换之后a[0...i]就形成了一个有序区 * 3、i++重复2原创 2014-05-30 11:49:20 · 582 阅读 · 0 评论 -
阿布学排序之堆排序
/** * 需求:堆排序的实现 * 知识储备: * 满二叉树:除叶子结点外的所有结点均有两个子结点,所有叶子结点必须在同一层上。 * 完全二叉树: * 若二叉树的深度为h,除第h层外,其它各层(1~h-1)的节点数都达到最大个数,第h层所有结点都连续集中在最左边。 * 完全二叉树是有满二叉树而引出来的,对于深度为K的,有N个结点的二叉树,当且仅当每一个结点都与深度为K的满二叉树中编号从原创 2014-05-15 17:08:12 · 686 阅读 · 0 评论 -
sleep()和wait()有什么区别?
package com.abuge;/** * 需求:sleep()和wait()有什么区别? * 第一种解释: * 都是用来进行线程控制,本质区别:sleep()不释放同步锁,wait()释放同步锁 * sleep不出让系统资源,wait是进入线程池等待,出让系统资源,其它线程可以占用CPU。一般 * wait()不会加时间限制,因为如果wait()线程的运行资源不够,再原创 2014-07-16 21:44:19 · 820 阅读 · 0 评论 -
阿布学排序之冒泡排序
package com.abuge;/** * 冒泡排序: * 设数组长度为N * 方法1: * 步骤:(升序) * 1、比较相邻两个数如果前面的数据大于后面的数据,则交换 * 2、这样数组的第0-N-1个数据进行遍历后,最大的一个数据就在第N-1个位置 * 3、N=N-1,如果N不为0,就重复执行前面两步,否则排序完成 * * 方法2: * 设置循环标志,如果有一趟发生了原创 2014-06-24 10:05:20 · 507 阅读 · 0 评论 -
黑马基础测试题整理
package com.itheima;/** * 第1题: * 从键盘接受一个数字,打印该数字表示的时间,最大单位到天例如:键盘输入6,打印6秒键盘输入60,打印1分键盘输入66,打印1分6秒键盘输入666,打印11分6秒键盘输入3601,打印1小时1秒键盘输入86440,打印1天40秒 * @author AbuGe * */import java.util.Sca原创 2014-02-12 10:13:08 · 2495 阅读 · 0 评论 -
内部类的继承与应用示例
class Egg2{ protected class Yolk { public Yolk()//第2步,第7步 { System.out.println("Egg2.Yolk()"); } public void f() { System.out.println("Egg2.Yolk.f()"); } } private Yolk y = n原创 2014-01-10 15:50:40 · 694 阅读 · 0 评论 -
java中类的加载,及执行顺序
类加载的顺序:1、加载静态成员\代码块:先递归地加载父类的静态成员/代码块(Object的最先),再依次加载到本类的静态成员。同一个类里的静态成员\代码块,按写代码的顺序加载。如果其间调用静态方法,则调用时会先运行静态方法,再继续加载。同一个类里调用静态方法时,可以不理会写代码的顺序。调用父类的静态成员,可以像调用自己的一样,但调用其子类的静态成员,必须使用(子类名.成员名)来调用原创 2013-12-06 17:11:20 · 707 阅读 · 0 评论 -
STL bitset用法总结
STL bitset用法总结 声明#include using std::bitset;bitset的定义和初始化bitset bitvec; //32位,全为0。给出的长度值必须是常量表达式。正如这里给出的,长度值必须定义为整型字面值常量或是已用常量值初始化的整数类型的const对象。这条语句把bitvec定义为含有32个位的bitset对象。和vec转载 2013-09-11 22:15:58 · 1105 阅读 · 0 评论 -
移位运算符
移位运算符不外乎就这三种:>(带符号右移)和>>>(无符号右移)。 1、 左移运算符左移运算符1)它的通用格式如下所示:value ;num 指定要移位值value 移动的位数。左移的规则只记住一点:丢弃最高位,0补最低位如果移动的位数超过了该类型的最大位数,那么编译器会对移动的位数取模。如对int型移动32位,实际上只移动了1位。(移动30位,相当于到了第31位(从0转载 2013-09-10 17:16:49 · 515 阅读 · 0 评论 -
输入输出流
1.cin、cin.get()、cin.getline()cin: 输入一系列字符,其中自动略过空格、tab、换行符等空白符。遇到文件结束符时返回0,但并不把这个0值放到输入对象中。 cin.get(): 接收一个输入字符(包括空白符),返回该字符值,遇到文件结束符时,返回EOF(即这个文件结束符)。 2.peek、putback、ignore ignor转载 2013-09-03 10:48:09 · 542 阅读 · 0 评论 -
STL的几个算法应用
#include #include #include #include #include #include #include #include using namespace std;class LessThan9{ public: bool operator()(int n) { re原创 2013-09-07 16:24:15 · 578 阅读 · 0 评论 -
内联函数的使用及注意点
内联函数的使用及注意点内联函数并不总是内联 Inline function是在C++中引入的一种机制,它可以拓展函数代码,避免调用函数的额外开销。在Linux环境下,gcc编译选项必须加上优化选项才能使inline有效。inline与static的关系 在这儿有一个比较详细的分析:http://www.cnblogs.com/xkfz007/articles/2转载 2013-09-06 16:21:55 · 989 阅读 · 0 评论 -
给出前序序列,求后序序列
有一棵树,每个结点存放一个字符。所有的叶子结点都存放着‘#’字符,非叶子结点则不可能存放‘#’字符。非叶子结点都是既有左子树又有右子树。给出该树的先序遍历序列,求其后序遍历序列输入:AB#D##CE###输出: ###DB##E#CA#include using namespace std;//先序遍历得到后序遍历(递归实现)//思想:没输入一个字符判断是否是#,如是则直接原创 2013-08-30 17:09:13 · 1266 阅读 · 0 评论 -
二叉树的先序、中序、后序遍历(删除树有问题)
#include using namespace std;//定义一个树节点struct CharNode{ char data; CharNode *pLeft; CharNode *pRight;};//创建一个树节点CharNode *CreateNode(char ndata){ CharNode *pNode = n原创 2013-08-30 16:37:09 · 644 阅读 · 0 评论 -
关于单链表的几种操作实现
#include using namespace std;//定义一个链表结点struct LNode{ int data; LNode *next;};//定义一个链表结构struct LinkList{ LNode *pHead;//表头指针 LNode *pCurrent;//当前结点指针 int nLengt原创 2013-08-29 19:56:21 · 651 阅读 · 0 评论 -
关于C++——理解C++默默编写并调用了哪些函数&&函数初始化式(初始化列表相关)
如:class Empty{};实际上等于写了:class Empty{ Empty() { ... };//默认构造函数 Empty( const Empty &rhs) { ... };//复制构造函数 ~Empty() { ... };//析构函数, 编译器产出的析构函数是非可见的原创 2013-08-28 22:54:07 · 508 阅读 · 0 评论 -
malloc与free和new/delete的区别
不同点:(1)操作对象有所不同。malloc与free是C++/C 语言的标准库函数,new/delete 是C++的运算符。对于非内部数据类的对象而言,光用maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数, 对象消亡之前要自动执行析构函数。由于malloc/free 是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加ma转载 2013-08-28 15:33:16 · 415 阅读 · 0 评论