分为多种情况:
1)两边都有花
假设两个花的位置分别为x,y,中间连续的0的个数为(x-y-1)个然后要去掉与这两朵花向邻的0,所以中间剩下的0的个数为(x-y-3),至少要剩下一个0才可以种花,所以在中间能够种花的条件为x-y>=4,
那么中间能够种几朵花呢?
如果有奇数个0,那么能够种花的数目为(x-y-2)/2
如果有偶数个0,那么能够种花的数目为(x-y-3)/2
但是由于整数除法向下取整的特性,这个值与(x-y-2)/2相同。
至此偶数和奇数个0求花朵的个数得到了统一。

2)如果两边没有花
那么中间能够种花的位置为0的个数比上面多2,其他的做法一样

3)如果有一端有花,一段没有花,那么可以种花的0的个数比第一种多1,其他的都一样。

如何区分这3种情况,设置一个pre,并将其初始化为负数,如果如果第一次遇到种花的地方,并且检测pre为负数,说明只有一端有花,采用第二种方法
如果为正数,说明两端有花,采用第一种方法,
并在每次操作完成后都将最新找到的花的位置赋值给pre

最后就是要考虑循环完成之后,最后一个位置是否有花
如果没有花,那么pre依然是负数,连续为0的长度是整个花坛的长度,直接用第二种方法

如果是正数,那就用第三种方法
因为-1/2是向下取整,结果为0,所以即使是pre指向花坛的最后一个位置,并且最后一个位置上面有花也不是什么大问题。

class Solution {public:bool canPlaceFlowers(vector<int>& flowerbed, int n) {int count = 0;int m = flowerbed.size();int prev = -1;for (int i = 0; i < m; i++) {if (flowerbed[i] == 1) {if (prev < 0) {count += i / 2;} else {count += (i - prev - 2) / 2;}if (count >= n) {return true;}prev = i;}}if (prev < 0) {count += (m + 1) / 2;} else {count += (m - prev - 1) / 2;}return count >= n;}
};作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/can-place-flowers/solution/chong-hua-wen-ti-by-leetcode-solution-sojr/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2021-09-26Leetcode605.种花问题相关推荐

  1. 橘子CPS联盟操作手册2021.09

    橘子CPS联盟操作手册2021.09 目录 橘子CPS联盟操作手册2021.09 橘子CPS联盟是干嘛的 橘子CPS基本操作流程 PC端操作 1.注册 2.登陆 3.渠道管理 4.分享网站 5.分享网 ...

  2. 2021.09.27 MySQL笔记

    2021.09.27 MySQL笔记 文章目录 2021.09.27 MySQL笔记 一.展示当前存在的所有数据库 二.使用(选中)一个数据库 三.创建一个数据表 四.查询并展示该数据库内的所有数据表 ...

  3. 实习日志 (2021.09.13)

    2021.09.13星期一 今天把之前的算法题终于给弄明白了,并能够按照自己的思路去把他给完成,总结这个题目并不是很难,最重要的是要把链表给弄懂,一开始由于我对链表不是很熟悉,导致我在写该题目的时候花 ...

  4. 2021.09青少年软件编程(Python)等级考试试卷(三级)

    2021.09青少年软件编程(Python)等级考试试卷(三级) 一.单选题(共25题,每题2分,共50分) 1.使用map函数可以实现列表数据元素类型的转换,而无需通过循环.则将列表L=['1',' ...

  5. 2021.09.24—皮皮与帅帅的第二篇情话

    2021.09.24我们小情书的第二天 每天晚上,小兔子都会一个人来到溪水边,坐在地上数着星星.而且他个人也非常喜欢一闪一闪的东西.对于小兔子来说,每颗星星都是特别的,于是她就给每颗星星都起了一个可爱 ...

  6. 《惢客创业日记》2021.09.15(周三)套路的最高境界

    今天,凉粉儿给我发了一段她想的关于惢客的宣传词:"你被套路过吗?想不再被套路吗?上惢客."总结一句话是"不被套路上惢客".我觉得能把惢客跟套路联系在一起,很贴切 ...

  7. Go 1.18将原生支持fuzz test | Gopher Daily (2021.09.21) ʕ◔ϖ◔ʔ

    每日一谚:Clear is better than clever. Go技术生态 Go 1.18合并了对Fuzz测试原生支持的代码 - https://github.com/golang/go/com ...

  8. 2021.09.27-10.3 AI行业周刊(第65期):坚持的力量

    本周话题:坚持的力量 国庆节花费了13个小时,从无锡开车回老家. 原本只需要4个小时,结果生生的开了一天,虽然很累,但是回家乡的执念一直在坚持. 开车回家的一路上,一直在回想这些年坚持做的很多事情: ...

  9. 详解即将于Go 1.18加入的Go泛型特性 | Gopher Daily (2021.09.27) ʕ◔ϖ◔ʔ

    每日一谚:use errors.Is(err, pkg.ErrFoo) rather than err == pkg.ErrFoo. Go技术生态 详解即将于Go 1.18加入的Go泛型特性 - ht ...

  10. Go程序内存泄露问题快速定位 | Gopher Daily (2021.09.01) ʕ◔ϖ◔ʔ

    每日一谚:Less is more. Go技术生态 github针对go仓库提供免费的持续benchmark服务 - https://github.com/marketplace/gobencher ...

最新文章

  1. 在Linux上使用图形界面的GitHub Desktop
  2. 详解/etc/profile、/etc/bash.bahsrc、~/.profile、~/.bashrc的用途
  3. 【LeetCode】617. 合并二叉树
  4. Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据
  5. C#——LINQ技术DEMO
  6. 服务器维护:FTP无法连接
  7. 筛选出一证多卡 用sql_对比Excel学习SQL(3):对列和行的操作
  8. 快速上手Tomcat
  9. c语言变量声明举例,C语言变量的定义和声明
  10. 基于Pytorch实现CNN卷积神经网络-Mnist数据集
  11. python两数相加有进退位_Python 之父透露退位隐情,与核心开发团队产生隔阂
  12. 机器学习:激活函数的作用和原理
  13. python正则表达式--爬取百度文库内容
  14. Tomcat 内存溢出对应解决方式
  15. parted如何将磁盘所有空间格式化_磁盘-使用parted格式化大容量数据盘
  16. 《阵列信号处理及MATLAB实现》绪论、矩阵代数相关内容总结笔记
  17. java面试基础题整理(二)
  18. 包装用超声波密封行业研究及十四五规划分析报告
  19. python-列表元素绝对值排序
  20. 网络工程师速记100条知识点(一)

热门文章

  1. 选择网管软件有哪些好处呢?
  2. tgp Linux 饥荒,饥荒TGP联机版专用服务器设置
  3. 图像处理技术之三:降噪处理(中值、均值、最大值、最小值滤波、图像噪声)
  4. HTML5音频标签audio无法播放的问题
  5. 直播 | 基于 GitLab 的 CI 实践
  6. 基于java的停车场管理系统代码分享
  7. 串口485接法图_终于有人把常用的三种通讯方式:RS485、RS232、RS422讲明白了
  8. 营收大涨352.7%,优信终迎“第二春”
  9. 搭建个人网站 (centos 7 + 域名 + 备案)
  10. 一篇文章吃透Java ArrayList 面试别问,问就是滔滔不绝!