摘要:1.空类的默认函数 一般情况下,对于任意一个类A,如果程序员不显示的声明和定义上述函数,C++编译器将会自动的为A产生4个public inline(公有、内联)的默认函数,这4个函数最常见的形式为: (1)默认构造函数 A() {} (2...
阅读全文
摘要:题目:在数组中,数字减去它右边的数字得到一个数对之差。求所有数对之差的最大值。例如在数组{2, 4, 1, 16, 7, 5, 11, 9}中,数对之差的最大值是11,是16 减去5 的结果。 1.思路 Solution1: 将其转换成求最大子数组问题。引入辅...
阅读全文
摘要:题目:输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。 例如输入整数22 和如下二元树 10 / \ 5 12 / \ 4 7 则打...
阅读全文
摘要:题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。比如将二元查找树 10 / \ 6 14 / \ / \ 4 81216 转换成双向链表4=6=8=10=12=14=16 1.思路 ...
阅读全文
摘要:题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”。 1.思路 最简单的。设source长n,key 长m(n>>m),则使...
阅读全文
摘要:问题描述:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。 基础:交换先后位置不影响异或结果,偶数个相同的数连续异或为0,0与数异或结果不变。 1.思路 ...
阅读全文
摘要:题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。 例如 输入5、7、6、9、11、10、8 true 输入7、4、6、5 f...
阅读全文
摘要:1.思路 假设链表......---A--B--C--D....,要删除B。一般的做法是遍历链表并记录前驱节点,修改指针,时间为O(n)。删除节点的实质为更改后驱指针指向。这里,复制C的内容至B(此时B,C同时指向D),删除节点C,即达到间接删除节点B的目的。 倘...
阅读全文
摘要:1.定义 倘若没有拷贝构造函数,编译器自动生成的构造拷贝函数或者拷贝运算符的重载函数。在编译器生成的缺省的构造拷贝函数和拷贝运算符的重载函数,对指针实行的是按位拷贝,仅仅只是拷贝指针的地址,而不会拷贝指针的内容。因此在执行完前面的代码之后,指针指向同一地址。当A或者B中任意一...
阅读全文
摘要:Solution1:整数往右移,与1按位与 不适用负数。因为负数的移位自动填补1,程序陷入死循环。 int NumberOf1_Solution1(int i){ int count = 0; while(i) { if(i ...
阅读全文
摘要:1.顺序循环队列: 1)队空条件:rear=front; 2)队满条件:(rear+1)%maxsize=front 3)进队:rear=(rear+1)%maxsize; 4)出队:front=(front+1)%m...
阅读全文
摘要:题目:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。 方法1:使用函数指针。 typedef int (*function)(int);int func1(int n){ return 0;}int ...
阅读全文
摘要:1.用数组描述的链表,即称为静态链表,元素为一般定义为含游标的结构体。优点:增删元素时,仅需要改变游标,保留了链表的优点;缺点则失去顺序表的随机读取特点。不便于Java使用(不含指针)。 2.顺序表是一种随机存储结构,即随机访问任意元素的时间均为O(1)。分为两种,一种为使用...
阅读全文
摘要:1.算法设计的目标: 可行性,可读性,健壮性,高效率,低存储。算法的一般特点:有穷性,确定性(无二义),可行性(由基本运算的有限次实现)。 2.数据的物理结构:顺序存储物理连续,存储密度高,可以随机访问数据。但是不利于数据插入删除。链式存储存储密度低,但是便于数据操作。...
阅读全文