坐标轴上从左到右依次的点为a[0]、a[1]、a[2]……a[n-1],设一根木棒的长度为L,求L最多能覆盖坐标轴的几个点?
来源:互联网 发布:淘宝steam代购 编辑:程序博客网 时间:2024/05/06 22:15
算法思想:开始时我把题目理解错了,以为是求a中最大子序列和使其等于L,实际上是求满足a[j]-a[i] <= L && a[j+1]-a[i] > L这两个条件的j与i中间的所有点个数中的最大值,即j-i+1最大,这样题目就简单多了,方法也很简单:直接从左到右扫描,两个指针i和j,i从位置0开始,j从位置1开始,如果a[j] - a[i] <= L则j++并记录中间经过的点个数,如果a[j] - a[i] > L则j–回退,覆盖点个数-1回到刚好满足条件的时候,将满足条件的最大值与所求最大值比较,然后i++,j++直到求出最大的点个数。
有两点需要注意:
(1)这里可能没有i和j使得a[j] - a[i]刚好等于L的,所以判断条件不能为a[j] - a[i] = L。
(2)可能存在不同的覆盖点但覆盖的长度相同,此时只选第一次覆盖的点。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// 求最大覆盖点
include
0 0
- 坐标轴上从左到右依次的点为a[0]、a[1]、a[2]……a[n-1],设一根木棒的长度为L,求L最多能覆盖坐标轴的几个点?
- 数轴上从左到右有n个点a[0],a[1]…,a[n-1],给定一根长度为L的绳子,求绳子最多能覆盖其中的几个点。要求算法复杂度为o(n)。
- 数轴上从左到右有n个点a[0],a[1]…,a[n-1],给定一根长度为L的绳子,求绳子最多能覆盖其中的几个点。要求算法复杂度为o(n)。
- [经典面试题][百度]数轴上从左到右有n各点a[0], a[1], ……,a[n -1],给定一根长度为L的绳子,求绳子最多能覆盖其中的几个点。
- [经典面试题][百度]数轴上从左到右有n各点a[0], a[1], ……,a[n -1],给定一根长度为L的绳子,求绳子最多能覆盖其中的几个点。
- 数轴上从左到右有n个点、a[0] a[1]……a[n-1]给定一根长度为l绳子、求绳子最多覆盖其中几个点
- 平面上n个点,半径为r的圆最多能覆盖几个点
- 长度为M的数组A,找出位置N,使得A[0]...A[N-1]和A[N]...A[M - 1]的和的乘积为最大。
- 设有两个有序(升序)序列存储在同一数组中相邻的位置上,不妨设为A[l..m],A[m+1..h],将它们归并为一个有序数列,并存储在A[l..h]。
- 试证某曲面上任何点处的切平面在各坐标轴上的截距之和等于a
- f i n a l 的注意事项
- f i n a l 的注意事项
- 给定一系列x轴的点坐标,例如 1,3,7,8,9,11这些坐标升序放在数组中,现在给一根绳子,长度为4,问绳子最多能覆盖的点数有多少,例如绳子放前面只能覆盖两个点,1,3,如果放后面能覆盖4个点。
- 如何通过旋转坐标轴计算坐标系A中的点到坐标系B中的点的变换T
- a[0]变为a[1]到a[n-1]的积,a[1]变为a[0]和a[2]到a[n-1]的积,……a[n-1]为a[0]到a[n-2]的积。要求:具有线性复杂度。不能使用除法运算符。
- 设 一个64位整型n,各个bit位是1的个数为a个. 比如7, 2进制就是 111, 所以a为3。现在给出m个数, 求各个a的值。要求代码实现。
- 求绳子最多能覆盖的点
- 求点A在直线B上的投影点
- 八皇后的问题
- Java生成二维码方法
- 新建ftp快捷方式
- 管闲事的小明
- mapreduce简单实现
- 坐标轴上从左到右依次的点为a[0]、a[1]、a[2]……a[n-1],设一根木棒的长度为L,求L最多能覆盖坐标轴的几个点?
- vim的简单使用
- assert()函数用法总结
- 短信发送接收时的UCS2编码转换处理
- bzoj2049【SDOI2008】Cave 洞穴勘测
- 二叉排序树(BST)/二叉查找树的建立(BST是笔试面试的常客)
- CodeForces 630N-Forecast
- CentOS 6.6 64位系统安装gcc编译器详解
- 【转】VS2010快捷键大全