绳子可以覆盖的最多点数

原创 2013年12月04日 20:43:47

有网友指出,我的算法其实没必要申请多余的数组,那么有没有更加高效的算法呢,我身边的一个大神给了我一个O(N)复杂度的算法:

  他的原话:两个指针,一个front,一个rear,每次front-rear,比L小,看覆盖的点数。保存覆盖点数的最大值,然后front++;比L大,rear++,每个数最多遍历2遍,复杂度O(N)。

  对于这个算法,他给了一个形象的比喻:

  就好像一条长度为L的蛇。头伸不过去的话,就把尾巴缩过来最多只需要走一次,就知道能覆盖几个点

int line(int a[],int n,int len)
{
    int front,rear,maxnum;
    front = rear = maxnum = 0;

    while(front < n)
    {
        if(a[front] - a[rear] <= len)
        {
            maxnum = fmax(maxnum,front-rear);
            front++;
        }
        else
            rear++;
    }
    return maxnum+1;
}

相关文章推荐

数轴上绳子覆盖的点数

  • 2013年09月29日 16:25
  • 13KB
  • 下载

POJ 1981 Circle and Points(求半径R圆覆盖最多点数及由圆上两点和半径求圆心)

题目: POJ 1981 Circle and Points HDU 1077 Catching Fish 题意: 给出n个点的二维点坐标,问单位圆最多能覆盖多少点? 分析: ①: 最优...
  • Ramay7
  • Ramay7
  • 2016年04月13日 23:01
  • 476

poj 1981 Circle and Points(固定半径的圆能覆盖的最多点数)

Circle and Points Time Limit: 5000MS   Memory Limit: 30000K Total Submissions: 5342 ...
  • fp_hzq
  • fp_hzq
  • 2012年09月12日 19:48
  • 1650

poj1106Transmitters【求旋转半圆能覆盖的最多点数】

Language: Default Transmitters Time Limit: 1000MS   Memory Limit: 10000K Total S...

lightoj1292Laser Shot【共线判断求共线的最多点数】

H - Laser Shot Time Limit:4000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu Submit Sta...

[经典面试题][百度]数轴上从左到右有n各点a[0], a[1], ……,a[n -1],给定一根长度为L的绳子,求绳子最多能覆盖其中的几个点。

题目 数轴上从左到右有n各点a[0], a[1], ……,a[n -1],给定一根长度为L的绳子,求绳子最多能覆盖其中的几个点。 思路一 遍历所有区间跟绳子L比较。  i遍历区间起...

【Codeforces Round 374 (Div 2)C】【DAG上的DP】Journey 有向无环图从1到n时刻T内的最多经过点数

C. Journey time limit per test 3 seconds memory limit per test 256 megabytes input ...

二位平面上,经过点数最多的线

#include #include #include #include using namespace std; class Point{ public: double x; double y; ...

求二维平面上共线最多的点数

思想为:统计每个点的各个斜率的直线上有多少个点 C++代码: #include #include #include #include #include // 随机数通用公式:a + r...

YT03-递推求解课后题目-1004 计算直线的交点数-(6.7日-烟台大学ACM预备队解题报告)分析: 将n 条直线排成一个序列,两条直线最多只有一个交点,三条直线最多有两个交点,直线n 和其他n

计算直线的交点数 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Su...
  • MIKASA3
  • MIKASA3
  • 2015年06月13日 16:51
  • 863
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:绳子可以覆盖的最多点数
举报原因:
原因补充:

(最多只允许输入30个字)