支配值数目

来源:互联网 发布:httpclient json 编辑:程序博客网 时间:2024/05/16 19:42
# -*- coding: cp936 -*-'''支配值数目已知f[]与g[]两个整数数组,元素已经从小到大排列,请写一个程序,算出f[]中比g[]元素大的对数。换句话说,f[0]比g[]中多少个元素大,f[1]比g[]中多少元素大等,这些值的总和就是要求的答案。'''def ComputSumOfBigger(fList , gList):    if (len(gList) == 0) or (len(fList) == 0):        return -1        sumOfBigger=0    indexg=0    tempLen=0    for item in fList:        while(indexg < len(gList)  and item > gList[indexg]):            indexg+=1            tempLen+=1        sumOfBigger+=tempLen    print "f[]中比g[]元素大的个数%d" %(sumOfBigger)ComputSumOfBigger([1,3,5,7,9], [2,3,4,7,8])


另外附上M.Rem的c++代码,思路相似,我是以gList为着力点算长度,M.Rem先生以fList为着力点算长度,

我的算法维护tempLen多了点时间复杂度,不管一个数组是否结束,总要判断indexg < len(gList),有少许性能损失

int dominance_count(int f[], int g[], int m, int n){int index_f,  index_g;int count;count=index_f=index_g=0;while(index_f<m && index_g <n){if(f[index_f <= g[index_g]]){     index_f++;}else{     index_g++, count+=m-index_f;} }return count;}