题目

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

思路一

遍历所有区间跟绳子L比较。
i遍历区间起点,j遍历区间终点。
时间复杂度为O(n^2)

代码一

    /*-------------------------------------*   日期:2015-02-08*   作者:SJF0115*   题目: 绳子覆盖*   来源:百度2014*   博客:------------------------------------*/#include <iostream>#include <vector>#include <cstring>#include <algorithm>using namespace std;class Solution {public:// points 给定点 L 绳子长度int RopeCover(vector<int> points,int L) {int size = points.size();if(size <= 0){return 0;}//if// 所能覆盖的最多点数int max = 0;int start = 0,end = 0;// i起点 j终点 遍历所有区间;for(int i = 0;i < size-1;++i){for(int j = i+1;j < size;++j){if(points[j] - points[i] <= L && j - i + 1 > max){max = j - i + 1;start = i;end = j;}//if}}//forcout<<"起点->"<<start<<" 终点->"<<end<<endl;return max;}};int main(){Solution s;vector<int> points = {-1,0,3,9,11,25};int L = 15;int result = s.RopeCover(points,L);// 输出cout<<result<<endl;return 0;}

思路二

两个指针,start,end。
如果points[front]-points[rear]<=L,头start向前移动一步。
如果points[front]-points[rear]>L,尾巴end向前移动一步。
每个数最多遍历2遍,因此时间复杂度为O(n)。
对于这个算法,某网友给了一个形象的比喻:
就好像一条长度为L的蛇。头伸不过去的话,就把尾巴缩过来最多只需要走一次,就知道能覆盖几个点

代码二

    /*-------------------------------------*   日期:2015-02-08*   作者:SJF0115*   题目: 绳子覆盖*   来源:百度2014*   博客:------------------------------------*/#include <iostream>#include <vector>#include <cstring>#include <algorithm>using namespace std;class Solution {public:// points 给定点 L 绳子长度int RopeCover(vector<int> points,int L) {int size = points.size();if(size <= 0){return 0;}//if// 所能覆盖的最多点数int max = 0;int start = 1,end = 0;int maxS = 0,maxE = 0;while(end < start){if(points[start] - points[end] <= L){if(start - end + 1 > max){max = start - end + 1;maxS = end;maxE = start;}//if// 头向前移动一格++start;}//ifelse{// 尾巴向前移动一格++end;}}//whilecout<<"起点->"<<maxS<<" 终点->"<<maxE<<endl;return max;}};int main(){Solution s;vector<int> points = {-1,3,4,9,11,25};int L = 8;int result = s.RopeCover(points,L);// 输出cout<<result<<endl;return 0;}

如果本方法有什么问题,欢迎指正。如果有更好的方法,欢迎指导。

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

  1. 1.1.5 蚂蚁。一根长度为L厘米的木棍上有n只蚂蚁,每只蚂蚁要么朝左爬,要么朝右爬,速度为1厘米/秒。

    蚂蚁 题目来源 :<算法竞赛入门经典--训练指南>/刘汝佳,陈锋编著 一根长度为L厘米的木棍上有n只蚂蚁,每只蚂蚁要么朝左爬,要么朝右爬,速度为1厘米/秒.当两只蚂蚁相撞时,二者同时掉头( ...

  2. 蓝色:九针串口 ,大头在上从左往右引脚分布:

    蓝色:九针串口 ,大头在上从左往右引脚分布:    1 2 3 4 5  6 7 8 9 针脚功能: 1.载波检测(DCD) 2.接受数据(RXD) 3.发送数据(TXD) 4.数据终端准备好(DTR ...

  3. 小应用程序运行结果如下:红色方块在文字上从左向右循环移动。

    题目:小应用程序运行结果如下:红色方块在文字上从左向右循环移动. 代码如下: import java.applet.Applet; import java.awt.Color; import java ...

  4. 2019 CSS经典面试题(史上最全,持续更新中...)

    这些是我自己在学习过程中总结的一些知识点,本篇文章我将以面试题的形式分享给大家,希望对大家有所帮助,本文篇幅较长,您若认真看完,并且反复阅读,我相信对您的学习或者是面试,都会有一定帮助,同时希望大家批 ...

  5. 【MySQL】经典面试题总结-史上最全面试题思维导图总结(2022最新版)

    写在前面

  6. 前端面试题(市场上流传最广的)

    HTML 1.Doctype作用?严格模式与混杂模式如何区分?它们有何意义? (1)<!DOCTYPE>声明位于位于HTML文档中的第一行,处于 <html> 标签之前.告知浏 ...

  7. html中把句子往右边弄一点咋办,CSS上的左,中,右对齐方法,可以在一行上混合...

    一种用CSS以左对齐/中心对齐/右对齐方式显示用HTML编写的句子的方法 在用"从左到右书写的语言"(如日语和英语)中编写的HTML中,除非指定了字符移位方向,否则句子左对齐显示. ...

  8. css3 动画右侧进入,css3动画(从上、左下、左、右进入页面)

    /*动画-start*/.animated{animation-duration:1.5s !important;-webkit-animation-duration:1.5s !important; ...

  9. I00016 打印等腰三角形字符图案(底边在左或右)

    曾经的计算机,没有显示屏,人们操作计算机时,用打印机记录执行的操作命令. 后来有了显示屏,不过最初的显示屏是字符频幕,输出只能是字符. 即使是今日,计算机已经进入多窗口图形界面时代,有时程序的输出也依 ...

最新文章

  1. 【Win 10 应用开发】Toast通知激活应用——前台后台
  2. 北京活动 | 新书首发手把手带你的产品从0开始验证一个新的业务
  3. [洛谷P2124] 奶牛美容
  4. 抑郁症的前期体现有哪些
  5. Linux带给了我什么?
  6. SVN客户端--TortoiseSVN使用说明
  7. HtmlTextWriter学习
  8. 奥数会不会彻底被信息奥赛取代?
  9. 语句拼接_Linux 进阶语句
  10. 在gluster中配置distributed 卷
  11. ibator使用心得
  12. 什么舱位_把“订舱位”说成book warehouse position,外企不会要你
  13. Spread基本知识(一)
  14. [Hash应用问题] 例3.2 给出n个整数,按从大到小的顺序输出前m大的数
  15. /proc/cpuinfo文件分析(查看CPU信息)
  16. 使用Eclipse构建Maven项目 (step-by-step) (转收藏)
  17. 黑马程序员--黑马程序员的入学流程真的“很黑”
  18. HDS F900装机小结
  19. 虚拟键盘 html,Jquery虚拟键盘(VirtualKeyboard)
  20. 终极卸载PC奇安信天擎

热门文章

  1. Web前端的状态管理
  2. [201511118]发生系统错误86.txt
  3. 为Autodesk Infrastructure Map Server(AIMS) Mobile Viewer创建自定义控件
  4. 分布式文件系统HDFS 学习指南
  5. 大数据电商数仓分析项目
  6. 水很深的深度学习-Task02机器学习基础
  7. 大数据分析对企业运营的价值体现
  8. 微信小程序支付-付款(Java后台)
  9. 用Matlab搭建GUI视频处理工具
  10. css3盒子模型微课_CSS3 盒子模型