int countArea(int a[],int k,int len,int start,int end)
{
if(start>end)
return 0;
int *c=(int*)malloc((k+1)*sizeof(int));
int i,j;
for(i=0;i<=k;i++)
{
c[i]=0;
}
for(i=1;i<=len;i++)
{
c[a[i]]++;
}
for(i=1;i<=k;i++)
{
c[i]+=c[i-1];
}
if(start==0)
j=c[end];
else
j=c[end]-c[start-1];
free(c);
return j;
}算法导论 练习题 8.1-4
最新推荐文章于 2022-08-03 16:00:58 发布
本文介绍了一种通过预处理数组来高效计算指定区间内元素总和的方法。该方法首先统计数组中各元素出现的频次,并累加形成前缀和数组,最后利用前缀和快速计算任意区间的元素总和。
835

被折叠的 条评论
为什么被折叠?



