摘要:
和为n连续正数序列 题目:输入一个正数n,输出所有和为n连续正数序列。 例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5、4-6和7-8。 分析:这是网易的一道面试题。 这道题和本面试题系列的第10题有些类似。我们用两个数small和big分别表示序列的最小值和最大值。首先把small初始化为1,big初始化为2。如果从small到big的序列的和大于n的... 阅读全文
摘要:
//生命不息,爱你不止!! while(!death){love++;day++}//无论你爱不爱我,爱你每天多一点!!while(you.love==me||you.love!=me){love++;day++;};注:灵感来自网友程序员 阅读全文
摘要:
题目:输入一颗二元查找树(左节点小,右节点大cheng),将该树转换为它的镜像,即在转换后的二元查找树中,左子树的结点都大于右子树的结点。用递归和循环两种方法完成树的镜像转换。 例如输入: 8/ \6 10 /\ /\5 7 9 11 输出: 8/ \10 6 /\ /\11 9 7 5 数据结构如下: typedef struct BinaryTreeNode{ int m_value; ... 阅读全文
摘要:
题目:定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。分析:这是google的一道面试题。 后来想到有个改进就是并不要最小栈和原始一样大,只有当前压入栈比之前的小,才更新,否则不需要压入;而弹出栈时,则当等于最小栈顶,最小栈才出栈。/*设计min函数的栈:利用两个栈,来实现0(1)的输出最小值min*/#include using namespace std;#include #include template class CStack_Min{public: CStack_Min(){}; ~CStac... 阅读全文
摘要:
题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。 例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。 分析:本题最初为2005年浙江大学计算机系的考研题的最后一道程序设计题,在2006年里包... 阅读全文
摘要:
void change_add(){ // unsigned int a = 0xFFFFFFF7; unsigned char i = (unsigned char)a; char *b = (char *)&a; //此处将a的地址赋值给b,强制使得b的地址指向a而已, printf("%08x,%08x\n",i,*b);//还有一个区别,就是b指针的+1跨度是si... 阅读全文
摘要:
5、在如下8*6的矩阵中,请计算从A移动到B一共有多少种走法?要求每次只能向上挥着向右移动一格,并且不能经过P;A、492B、494C、496D、498A。A走到B共需要12步,其中7步必须向右,5步必须向上,但是向右和向上的次序可以不同,因此是C(7,12),要求P不能走,那么走到P的可能次数是C(3,6),从P走到B的可能次数是C(4,6),因此结果是C(7,12) – C(3,6)*C(4,6)=492。 阅读全文
摘要:
问题:给出一个算法,用它来确定一个给定的无向图G=(V,E)中是否包含一个回路。所给出的算法的运行时间为O(V),这一时间独立于|E|解答:我们都知道对于一个无向图而言,如果它能表示成一棵树,那么它一定没有回路,并且有|E|=|V|-1,如果在这个树上添加一条边,那么就构成了回路,如果在这个树中去掉一个边就成了森林(注意:如果只是限定|E|<|V|-1它不一定是森林,它当中可能存在无向连通子图)。 对于这个题目我们可以用DFS来做,每当访问当前节点的邻接表时,如果存在某个邻接的元素已被标记为访问状态,那么这个图就是存在回路的。总的时间代价是O(|E|+|V|),因为E<=|V|-1 阅读全文
摘要:
short input[10]={'A','B','C','D','E'}; //short是两个字符的int s = 0; char* p = (char*)input; printf("'0'-'A' = %d\n",'0'-'A');for(int i=0;i<sizeof(input);++i){ char v = p[i]; //此处一定要注意v是字符型的,截断的if(v>0) //只有在0,2,4,6,8才是 阅读全文