工作之笔试
文章平均质量分 71
攻城狮凌风
专业吹水,从不装B
展开
-
每天一道算法题(38)——二叉树的非递归遍历
#include#include "stack"using namespace std;struct node{ char c; node* left; node *right; bool flag;};void pre(node* head){//非递归前序遍历 stack s; while (head || !s.empty()){ if (head){ co原创 2015-10-13 20:46:28 · 1102 阅读 · 0 评论 -
每天一道算法题(31)——正数减法
问题描述: 两个任意长度的正数相减,这两个正数可以带小数点,也可以是整数,请输出结果。 输入的字符串中,不会出现除了数字与小数点以外的其它字符,不会出现多个小数点以及小数点在第一个字符的位置等非法情况,所以考生的程序中无须考虑输入的数值字符串非法的情况。详细要求以及约束:1.输入均为正数,但输出可能为负数;2.输入输出均为字符串形式;3.如果输出是正数则不需要带符号,如果为原创 2015-08-14 22:11:50 · 877 阅读 · 0 评论 -
2014华为机试真题(2)
1.数字是否存在相同部分 求一个整型数字中有没有相同的部分,例如12386123这个整型数字中相同的部分是123,相同的部分至少应该是2位数,如果有相同部分返回1,如果没有则返回0。方法是先将整型数字转换到数组中,再判断。 函数为 int same(int num) 其中num是输入的整型数字 使用循环移位法。如,每次全扫描原创 2015-08-14 22:01:38 · 1719 阅读 · 0 评论 -
每天一道算法题(24)——自定义幂函数pow
double myPower(double base, int exponent){ if(exponent==0) return 1; if(exponent==1) return base; if(exponent==-1)//当为是负数的情况 return 1.0/base; double result=1.0; result=myPower(base,exponen原创 2015-06-25 16:13:54 · 1361 阅读 · 0 评论 -
每天一道算法题(26)——输入字符串表达式求值
题目: 输入字符串,求输出的值。输入的均为整形,要求包含运算符 例如输入: "24*1 +(4+6)*2+ (4-3*2) *( 4+6-9+(11-3*4)*2 +2)* 10+ 20 -3* 2 *4 +2" 输出结果:20 要求:对于多余空格字符完好的鲁棒性,函数原型:void process(cons原创 2015-07-31 11:56:51 · 2433 阅读 · 0 评论 -
每天一道算法题(34)——背包问题
1.0-1背包问题 有N件物品和一个能装质量为W的背包。第i件物品的重量是w[i],价值是v[i]。求解将哪些物品装入背包可使这些物品的总重不超过背包总重,且价值总和最大。这个问题的特点是:每种物品只有一件,可以选择放或者不放。 定义f[i][j]:在前i个物品中用容量为j的包选择所能得到的最大价值。则转移方程:f[i][j]=max{f[i-1][j],f[原创 2015-08-25 21:39:52 · 1455 阅读 · 0 评论 -
每天一道算法题(22)——扑克牌的顺子
题目: 从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2-10为数字本身,A为1,J为11,Q为12,K为13,而大小王可以看成任意数字。思路: 设定王为0。统计非王的牌之间的空格数,若小于王的总数(对应填补),则为顺子。有任意一张牌大于2,为非顺子。代码: bool process(const char*原创 2015-07-16 10:12:53 · 1495 阅读 · 0 评论 -
每天一道算法题(23)——约瑟夫环问题
题目: 已知n个人(以编号0,1,2...n-1分别表示)围坐在一张圆桌周围。从编号为0的人开始报数1,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。问最后的剩下的人。思路: 1.直接使用list模拟约瑟夫环。删除节点 2.第二,分析之。对于n个数而言,剩下的人是f(n,m)=(f原创 2015-07-16 14:43:18 · 923 阅读 · 0 评论 -
每天一道算法题(12)——和为n的连续正数序列或者随机数
题目:输入一个正数n,输出所有和为n 连续正数序列。例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3 个连续序列1-5、4-6 和7-8。1.思路 尊崇以下策略: (1)对于固定的left.当前sum值小于目标Sum,则right一直后移 (2).sum==Sum。则输出序列,且将right后原创 2015-06-15 15:03:32 · 607 阅读 · 0 评论 -
计算机系统
1.程序的容错(fault-tolerance) graceful degradation (优雅降级):优雅降级(Graceful degradation)是指电脑,机器,电子系统或者是网络在本身大部分已经毁坏或无效的情况下还能保持有限的功能这种能力。优雅降级的目的是阻止灾难性的失败。理想情况下,有优雅降级特征的系统即使多个组件同时失效也不会引起停机。在优雅降级中,操作的原创 2015-07-03 22:25:53 · 585 阅读 · 0 评论 -
每天一道算法题(19)——最近公共父节点问题
给定一颗二叉树,以及其中的两个node(地址均非空),要求给出这两个node的一个公共父节点,使得这个父节点与两个节点的路径之和最小。描述你程序的最坏时间复杂度,并实现具体函数,函数输入输出请参考如下的函数原型原创 2015-07-06 22:34:22 · 1158 阅读 · 0 评论 -
每天一道算法题(7)——在字符串中删除特定的字符
题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”。1.思路 最简单的。设source长n,key 长m(n>>m),则使用简单的遍历查找需要n*m次(n个字符,查找m次),且每次删除对应元素需要O(1)时间(元素移动)。原创 2015-05-22 11:51:49 · 1561 阅读 · 0 评论 -
每天一道算法题(28)——计算正整数的加、减运算式
题目: 通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串。输入字符串的格式为:“操作数1 运算符 操作数2”,“操作数”与“运算符”之间以一个空格隔开。 补充说明: 1. 操作数为正整数,不需要考虑计算结果溢出的情况。 2. 若输入算式格式错误,输出结果为“0”。代码:boo原创 2015-08-04 15:13:32 · 757 阅读 · 0 评论 -
2014华为机试(3)
1..IP地址判断有效性题目判断输入的字符串是不是一个有效的IP地址详细描述:请实现如下接口 boolisIPAddressValid(constchar* pszIPAddr) 输入:pszIPAddr 字符串 输出:true 有效的IP地址,false,无效的IP地址约束输入IP为XXX.XXX.XXX.XXX格式 字符串两端原创 2015-08-16 16:57:36 · 689 阅读 · 0 评论 -
每天一道算法题(32)——输出数组中第k小的数
1.题目 快速输出第K小的数2.思路 使用快速排序的思想,递归求解。若键值位置i与k相等,返回。若大于k,则在[start,i-1]中寻找第k大的数。若小于k。则在[i+1,end]中寻找第k+start-i-1小的数。3.代码#include#includeusing namespace std;int choose(int* data,int start原创 2015-08-18 11:25:09 · 745 阅读 · 0 评论 -
2014华为机试真题(1)
1.及格线问题10个学生考完期末考试评卷完成后,A老师需要划出及格线,要求如下:(1) 及格线是10的倍数;(2) 保证至少有60%的学生及格;(3) 如果所有的学生都高于60分,则及格线为60分#includeusing namespace std; /**********************solution1****************************原创 2015-08-10 22:57:40 · 896 阅读 · 0 评论 -
每天一道算法题(33)——阿里巴巴之魔方翻转
题目: 阿里巴巴2015秋招机试题目:一个三阶魔方由六个面组成,颜色分别是白色(W)、对面为黄色(Y)、红色(R)、对面为橙色(O)、绿色(G)、对面为蓝色(B)。如果手持魔方,白色向上,红色朝向自己,则绿色在左手侧。请写一个程序,对一个处于还原状态(各面各块同色)的魔方,进行操作,打印操作后的魔方状态。操作指令为单个操作指令组成的字符串。单个操作指令包括:1)U:白色面顺时原创 2015-08-23 20:26:32 · 1408 阅读 · 0 评论 -
每天一道算法题目(20)——复杂链表的拷贝
题目: 输入复杂链表如图,复制该链表。思路: 如图。传统的做法是先复制next指针部分,然后对于每个节点的random部分,则需要遍历整个链表查找对应节点。时间复杂度为O(n.^2)。时间这里总结一种时间复杂度为O(n)空间复杂度为O(1)的方法。 第一步。简单复制next指针部分,并将拷贝节点和源节点链接一起。 第二原创 2015-07-07 15:49:40 · 734 阅读 · 0 评论 -
每天一道算法题(25)——字符串中连续出现次数最多的子串
#include"iostream"#include"string"using namespace std;pair fun(const string& str);int _tmain(int argc, _TCHAR* argv[]){ string str="abcbcbcabc"; pair p=fun(str); cout<<p.first<<": "<<p.secon原创 2015-07-27 14:44:43 · 1002 阅读 · 2 评论 -
每天一道算法题(37)——360校招机试之寻找同乡
题目: 输如若干行,第一行输入人的个数n和存在同乡关系的对数m。后面紧接着是m行(m代码:#include #include #includeusing namespace std;void process(int n,int g,vector &v){ int* flag=new int[n+1]; for(int i=0;i<n+1;i++) flag[原创 2015-09-29 21:33:33 · 1910 阅读 · 1 评论 -
每天一道算法题(27)——找出元音字母并排序
题目:原创 2015-08-03 22:17:06 · 1226 阅读 · 0 评论 -
每天一道算法题(29)——检测字符串的是否由移位得到
题目: 字符串ABCD,可以由字符串BCDA或者CDAB通过循环移位而得到。请编程实现以下检测:字符串S1是否可以由字符串S2通 过循环移位而得到。思路: 1.不涉及字符串拷贝,只通过指针移位匹配字符串。 2.遍历s1的所有移位形式,只要有一种形式匹配s2则退出。代码:#include"iostream"using nam原创 2015-08-05 14:04:30 · 650 阅读 · 0 评论 -
每天一道算法题(35)——删除字符串首尾的空格
题目: 输入字符串,删除首尾的空格。单词中间只留下一个空格。 如输入“ a b c ”输出“a b c"代码: public static String test1(String s) { StringBuffer sb=new StringBuffer(s.trim()); int j=0; int i; for(;原创 2015-09-07 17:30:17 · 1650 阅读 · 0 评论 -
2014华为机试——两个城市之间的最多路径
题目:原创 2014-09-23 15:11:24 · 1845 阅读 · 0 评论 -
每天一道算法题(10)——数对之差的最大值
题目:在数组中,数字减去它右边的数字得到一个数对之差。求所有数对之差的最大值。例如在数组{2, 4, 1, 16, 7, 5, 11, 9}中,数对之差的最大值是11,是16 减去5 的结果。1.思路 Solution1: 将其转换成求最大子数组问题。引入辅助数组diff,长度为n-1。diff[i]=dif[i]-diff[i+1]。求出最大子数组以及位置low,hi原创 2015-05-27 19:59:30 · 1158 阅读 · 0 评论 -
每天一道算法题(30)——高效的求斐波拉契数列
对于斐波拉契经典问题,我们都非常熟悉,通过递推公式F(n) = F(n - 1) + F(n - 2),我们可以在线性时间内求出第n项F(n),现在考虑斐波拉契的加强版,我们要求的项数n的范围为int范围内的非负整数,请设计一个高效算法,计算第n项F(n)。第一个斐波拉契数为F(0) = 1。给定一个非负整数,请返回斐波拉契数列的第n项,为了防止溢出,请将结果Mod 1000000007。原创 2015-08-05 15:52:29 · 1947 阅读 · 0 评论 -
数据库基础
1.事物: 原子性:事务中包括的所有操作要么都做,要么不做 持续性:事务一旦提交,对数据库的改变时永久的 隔离性:一个事务内部的操作及使用的数据对并发的其他事务是隔离的 一致性:事务必须是使数据库从一个一致性状态变到另一个一致性状态原创 2015-07-02 22:49:49 · 401 阅读 · 0 评论 -
软件测试
1.alpha测试和Beta测试 α测试是由一个用户或者第三方公司在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试。α测试不能由程序员或测试员完成。模拟各类用户行为对即将面市的软件产品进行测试,试图发现并修改错误。α测试发现的错误,可以在测。α测试性能测试现场立刻反馈给开发人员,由开发人员及时分析和处理。目的是评价软件产品的功能、可使用性原创 2015-07-02 22:46:16 · 506 阅读 · 0 评论 -
每天一道算法题(8)——把二元查找树转变成排序的双向链表
题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。比如将二元查找树10/ \6 14/ \ / \ 4 81216 转换成双向链表4=6=8=10=12=14=161.思路 使用递归法。注意由于需要改变指针的指向,因此使用了指针引用。2.代码#incl原创 2015-05-26 11:20:57 · 642 阅读 · 0 评论 -
每天一道算法题(6)——查找2个只出现1次的数字
问题描述:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。 基础:交换先后位置不影响异或结果,偶数个相同的数连续异或为0,0与数异或结果不变。1.思路 (1)全部元素异或,结果一定不为0,且结果为只出现1次的元素的异或。原创 2015-05-21 16:04:57 · 812 阅读 · 0 评论 -
每天一道算法题(14)——N个降序数组,找到最大的K个数
题目: 假定有20个有序数组,每个数组有500个数字,降序排列,数字类型32位uint数值,现在需要取出这10000个数字中最大的500个。思路 (1).建立大顶堆,维度为数组的个数,这里为20(第一次 插入的是每个数组中最大的值,即第一个元素)。 (2).删除最大堆堆顶,保存到数组或者栈中,然后向最大堆插入删除的元素所在数组的下一原创 2015-06-18 10:38:34 · 1663 阅读 · 0 评论 -
每天一道算法题(13)——使用递归颠倒栈
题目:用递归颠倒一个栈。例如输入栈{1, 2, 3, 4, 5},1 在栈顶。颠倒之后的栈为{5, 4, 3, 2, 1},5 处在栈顶思路: 1.弹出并保存栈顶元素 2.递归,颠倒剩余的栈 3.将栈顶元素保存至栈底代码: //使用递归法,逆转栈templatebool reverseSta原创 2015-06-16 14:15:37 · 2083 阅读 · 1 评论 -
每天一道算法题(11)——栈的push、pop 序列
题目:输入两个整数序列。其中一个序列表示栈的push 顺序,判断另一个序列有没有可能是对应的pop 顺序。为了简单起见,我们假设push 序列的任意两个整数都是不相等的。 例如:输入的push 序列是1、2、3、4、5,那么4、5、3、2、1 就有可能是一个pop 系列1.思路 (1)假设栈顶元素等于输出指针指向元素,弹出栈顶元素并后移输出指针;原创 2015-06-04 11:01:12 · 1174 阅读 · 0 评论 -
每天一道算法题(3)——含有指针元素的模板类
1.定义 倘若没有拷贝构造函数,编译器自动生成的构造拷贝函数或者拷贝运算符的重载函数。在编译器生成的缺省的构造拷贝函数和拷贝运算符的重载函数,对指针实行的是按位拷贝,仅仅只是拷贝指针的地址,而不会拷贝指针的内容。因此在执行完前面的代码之后,指针指向同一地址。当A或者B中任意一个结束其生命周期调用析构函数时,程序就会不可避免地崩溃。因此在此种情况中,一般手动定义拷贝构造函数和重原创 2015-05-18 16:17:08 · 705 阅读 · 0 评论 -
2014华为机试,迷宫矩阵寻找单词的存在与否
一.题目如下二.题目分析三.代码原创 2014-08-26 16:31:02 · 1524 阅读 · 0 评论 -
【Java】Java程序员面试宝典(第三版)第5章----Java程序设计基本概念
1.static静态变量,在次级作用域也可以被修改。2.k++ + k++。第一个自加实际上只有在与计算+k++时补增。详情P36的题目。3.Java数据类型从低到高分为(byte short char)---int-long-float--double。低级可以自动转换为高级。平级和高级向低级转换均使用强制转换。可以使用包装类定义对象后,使用对象的子函数转换,此时包装内可以实现不同数据类原创 2015-03-03 14:56:09 · 785 阅读 · 0 评论 -
2014华为机试,寻找丑数。
题目:2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第1500个丑数。原创 2014-08-29 11:13:08 · 1341 阅读 · 0 评论 -
2014美团笔试之寻找最短子串
先看一个题目。是美团2014的笔试题目,rutu原创 2014-10-11 13:20:32 · 1079 阅读 · 0 评论 -
2014华为机试——地铁换乘寻找最少车站数和排序算法
已知2条地铁线路,其中A为环线,B为东西向线路,线路都是双向的。经过的站点名分别如下,两条线交叉的换乘点用T1、T2表示。编写程序,任意输入两个站点名称,输出乘坐地铁最少需要经过的车站数量(含输入的起点和终点,换乘站点只计算一次)。地铁线A(环线)经过车站A1 A2 A3 A4 A5 A6 A7 A8 A9 T1 A10 A11 A12 A13 T2 A14 A15 A16 A17 A18原创 2014-09-22 17:25:23 · 1637 阅读 · 0 评论 -
2014华为机试,计算给定和牌麻将的番数
题目如下:原创 2014-08-20 22:20:50 · 1663 阅读 · 0 评论