安置路灯

安置路灯

http://www.nowcoder.com/questionTerminal/3a3577b9d3294fb7845b96a9cd2e099c

方法:
  贪心

想法:
  对于一个没被照亮的点来说,最好是只占用路灯能照亮的区域的最左边,这样的话,能够最大化利用路灯的照亮区域,这种安装方式满足了两个要求,一是所有的路灯都被覆盖到了,只要当前位置没有被路灯覆盖,就立即安装路灯,二是最大程度减少了使用路灯的数量,没有浪费掉路灯能照亮的左侧区域,并且最好情况下能同时覆盖三个需要被照亮的点。

算法:
  遍历一条路的同时维护两个变量,当前路灯能照亮的最远距离max_,当前已使用的路灯数量cnt,如果遇到的是'.',并且它还没有被照亮,说明此时不得不安装路灯,让cnt++,同时将路灯所能照亮的最远距离max_更新为当前位置+2。

复杂度分析:
  时间复杂度:O(N),其中 N 是路灯长度,一次遍历。
  空间复杂度:O(1),max_和cnt,常数的空间。

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,m;
    cin>>n;
    string road;
    for(int i=0;i<n;i++)
    {
        cin>>m>>road;
        int cnt=0,max_=-1;
        for(int j=0;j<m;j++)
            if(road[j]=='.'&&j>max_)
            {
                cnt++;
                max_=j+2;
            }
        cout<<cnt<<endl;
    }
    return 0;
}
全部评论

相关推荐

想踩缝纫机的小师弟练...:不理解你们这些人,要放记录就把对方公司名字放出来啊。不然怎么网暴他们
点赞 评论 收藏
分享
02-28 01:18
已编辑
南昌大学 后端工程师
黑皮白袜臭脚体育生:把开源经历放个人项目上边应该更好,就像大部分人都把实习经历放个人项目上边
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# AI面会问哪些问题? #
24960次浏览 492人参与
# 中国电信笔试 #
31122次浏览 283人参与
# 厦门银行科技岗值不值得投 #
7509次浏览 186人参与
# 你的实习产出是真实的还是包装的? #
18854次浏览 330人参与
# 如果秋招能重来,我会____ #
96710次浏览 500人参与
# 春招至今,你的战绩如何? #
60153次浏览 546人参与
# 开放七大实习专项,百度暑期实习值得冲吗 #
14185次浏览 209人参与
# i人适合做什么工作 #
36934次浏览 124人参与
# 我是面试官,请用一句话让我破防 #
79529次浏览 219人参与
# 哪些公司真双非友好? #
69218次浏览 287人参与
# 金三银四,你的春招进行到哪个阶段了? #
21574次浏览 277人参与
# 找AI工作可以去哪些公司? #
7738次浏览 188人参与
# 从事AI岗需要掌握哪些技术栈? #
7730次浏览 251人参与
# 投递几十家公司,到现在0offer,大家都一样吗 #
339952次浏览 2165人参与
# 面试尴尬现场 #
220775次浏览 861人参与
# 五一之后,实习真的很难找吗? #
102811次浏览 584人参与
# 你做过最难的笔试是哪家公司 #
30318次浏览 193人参与
# 你小时候最想从事什么职业 #
159844次浏览 2072人参与
# 应届生第一份工资要多少合适 #
20489次浏览 84人参与
# 阿里笔试 #
176531次浏览 1302人参与
# 一张图晒出你司的标语 #
3843次浏览 72人参与
# 面试被问期望薪资时该如何回答 #
382478次浏览 2163人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务