求绳子最多能覆盖的点

数轴上有一系列点a[0],a[1],a[2]......a[n-1],给定一根长度为L的绳子,求绳子最多能覆盖的点的个数。

算法思路:用两个指针,初始值设为i=0,j=1;求出以i为起点最多能覆盖的点数maxNum,然后i和j都往后移动一步,如果a[j]-a[i]<=L,说明绳子可以覆盖更多的点,把i固定,求出新的maxNum,后面的操作重复前面的循环,直至j碰到最后一个点为止。算法复杂度真正为O(n),因为外层和里层while循环都控制着变量j++。网上关于这道题的解法不一,但自认为这是最好的解法。

#include 
int overrideMaxNum(int *points,int pointsNum,int L)
{
	int maxNum=1,i=0,j=1;
	if(L<=0||points==NULL||pointsNum<=0)return 0;
	while(j

你可能感兴趣的:(求绳子最多能覆盖的点)