算法设计
情深的媛
netease 高级java开发工程师,曾在乐视和美团
展开
-
求两个等长有序序列的中位数
/*现有两个等长的升序序列的序列A,B,试设计一个时间和空间都尽可能高效的算法,找出两个序列的中位数算法的基本思想是:分别求出两个序列的中位数,即为a b,有下列三种情况1:a=b;即a 为两个序列的中位数2:a3:a>b:则中位数只能出现在b和a之间,在序列a中舍弃A之后的元素得到序列A1,在序列B中舍弃b之前的元素,得到B1;在A1和B1中分别求出中位数,重复上述过程,得到原创 2013-05-02 17:37:44 · 3076 阅读 · 0 评论 -
数组循环右移左位
c++数组的循环左移算法, 把前n个元素逆置,再把后s.size-1个元素逆置,最后把整个数组元素逆置#include#include#includeusing namespace std;void zuoyi(string s,int n){string ss=s.substr(0,n-1);reverse(ss.begin(),ss.end());原创 2013-04-27 16:22:59 · 634 阅读 · 0 评论 -
求俩个有序序列的中位数 ,和求众数问题
2010-03-31 10:43google笔试题两个n维数组logn求中位数问题两个n维数组,已排序,为升序。设计算法求2n的数中第n大的数。要求分析时间和空间复杂度。比较两个有序表各自的中位数 a,b 假设 a>=b,那么这2n个数的中位数一定不在第一个序列>a的那部分上,因为第一个序列中有n/2-1个数比a小,第二个序列中至少有n/2个数比a小(a>=b),同理,中位转载 2013-04-15 19:27:54 · 866 阅读 · 0 评论 -
KMP字符串模式匹配详解
个人觉得这篇文章是网上的介绍有关KMP算法更让人容易理解的文章了,确实说得很“详细”,耐心地把它看完肯定会有所收获的~~,另外有关模式函数值next[i]确实有很多版本啊,在另外一些面向对象的算法描述书中也有失效函数 f(j)的说法,其实是一个意思,即next[j]=f(j-1)+1,不过还是next[j]这种表示法好理解啊:转载 2013-03-16 19:41:17 · 520 阅读 · 0 评论 -
写一个函数求一个整数数组中第二大元素。
#coding=gbk#[微软面试题]写一个函数求一个整数数组中第二大元素。 def find_sec_max( A ):N = len( A)if Nreturn 0M1 = A[0]M2 = M1for i in range(1,N):# A[i] 如果比最大的还大if A[i]>M1:M2 = M1 #原最大的当二大M1 = A[i] #产生新转载 2013-05-04 18:11:15 · 1068 阅读 · 0 评论