算法
chenxintao
移动互联网开发
展开
-
和最大的子序列
输入:数组a[n](数据有正有负)输出:该数组中和最大的连续子序列,以及该最大和 int maxsub2(int* arr,int len){ int i,maxsum=INT_MIN,sum=0; int beg=0,end=0,pos=0; for(i=0;ilen;++i) { sum+=arr[i];转载 2012-04-04 14:36:43 · 525 阅读 · 0 评论 -
经典算法面试与解答(二)
1、题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数的非递归解法例如输入12,从1到12这些整数中包含1 的数字有1,10,11和12,1一共出现了5次。分析:把该正整数表示为十进制的字符串:an-1an-2…a0,其中an-1为最高位,a0为最低位(个位),按最高位、最低位、中间位来分别分析其中1出现的次数:最高位(an-1)出现数字1的次数:原创 2012-08-15 00:13:44 · 1784 阅读 · 0 评论 -
经典算法面试题解答(三)----- 最短路径、最长路径
1、最长字符连接有n个长为m+1的字符串,如果某个字符串的最后m个字符与某个字符串的前m个字符匹配,则两个字符串可以联接,问这n个字符串最多可以连成一个多长的字符串,如果出现循环,则返回错误。分析:将各个字符串作为一个节点,首尾链接就好比是一条边,将两个节点连接起来,于是问题就变成一个有关图的路径长度的问题。链接所得的字符串最长长度即为从图的某个节点出发所能得到的最长路径问题,与最短路原创 2012-08-18 13:02:59 · 15644 阅读 · 0 评论 -
经典面试题(四)
1、已知一个整数数组a,给定一个整数x,判断x是否数组a中某两个数之和?思路1:把数组进行排序,时间复杂度为nlogn,再用二分查找x-a[i],时间复杂度为nlogn。总的时间复杂度为nlogn。思路2:采用hash_map,把数据hash到哈希表中,可以以key-value为数据-数据出现的次数来建立哈希表,然后查找x-a[i]的数据,时间复杂度为n。2、求一个数组的最长递原创 2012-08-30 22:11:35 · 1167 阅读 · 0 评论 -
经典面试题解答(四)
函数的声明如下:void DeleteNode(ListNode* pListHead, ListNode* pToBeDeleted); 分析:这是一道广为流传的Google面试题,能有效考察我们的编程基本功,还能考察我们的反应速度,更重要的是,还能考察我们对时间复杂度的理解。在链表中删除一个结点,最常规的做法是从链表的头结点开始,顺序查找要删除的结点,找到之后再删除。由于需要顺序原创 2012-08-23 00:08:47 · 857 阅读 · 0 评论 -
经典面试题(五)
1.求一个二叉树中任意两个节点间的最大距离,两个节点的距离的定义是 这两个节点间边的个数,比如某个孩子节点和父节点间的距离是1,和相邻兄弟节点间的距离是2,优化时间空间复杂度。参考:http://www.cnblogs.com/miloyip/archive/2010/02/25/1673114.html2、最长公共字串。题目:如果字符串一的所有字符按其在字符串中的顺序出现在另转载 2012-09-14 01:01:10 · 731 阅读 · 0 评论 -
100道经典算法题(51-75)
51.和为n连续正数序列。题目:输入一个正数n,输出所有和为n连续正数序列。例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5、4-6和7-8。分析:这是网易的一道面试题。52.二元树的深度。题目:输入一棵二元树的根结点,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的原创 2012-10-05 19:39:02 · 7221 阅读 · 0 评论