2021-09-26Leetcode605.种花问题
分为多种情况:
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.种花问题相关推荐
- 橘子CPS联盟操作手册2021.09
橘子CPS联盟操作手册2021.09 目录 橘子CPS联盟操作手册2021.09 橘子CPS联盟是干嘛的 橘子CPS基本操作流程 PC端操作 1.注册 2.登陆 3.渠道管理 4.分享网站 5.分享网 ...
- 2021.09.27 MySQL笔记
2021.09.27 MySQL笔记 文章目录 2021.09.27 MySQL笔记 一.展示当前存在的所有数据库 二.使用(选中)一个数据库 三.创建一个数据表 四.查询并展示该数据库内的所有数据表 ...
- 实习日志 (2021.09.13)
2021.09.13星期一 今天把之前的算法题终于给弄明白了,并能够按照自己的思路去把他给完成,总结这个题目并不是很难,最重要的是要把链表给弄懂,一开始由于我对链表不是很熟悉,导致我在写该题目的时候花 ...
- 2021.09青少年软件编程(Python)等级考试试卷(三级)
2021.09青少年软件编程(Python)等级考试试卷(三级) 一.单选题(共25题,每题2分,共50分) 1.使用map函数可以实现列表数据元素类型的转换,而无需通过循环.则将列表L=['1',' ...
- 2021.09.24—皮皮与帅帅的第二篇情话
2021.09.24我们小情书的第二天 每天晚上,小兔子都会一个人来到溪水边,坐在地上数着星星.而且他个人也非常喜欢一闪一闪的东西.对于小兔子来说,每颗星星都是特别的,于是她就给每颗星星都起了一个可爱 ...
- 《惢客创业日记》2021.09.15(周三)套路的最高境界
今天,凉粉儿给我发了一段她想的关于惢客的宣传词:"你被套路过吗?想不再被套路吗?上惢客."总结一句话是"不被套路上惢客".我觉得能把惢客跟套路联系在一起,很贴切 ...
- 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 ...
- 2021.09.27-10.3 AI行业周刊(第65期):坚持的力量
本周话题:坚持的力量 国庆节花费了13个小时,从无锡开车回老家. 原本只需要4个小时,结果生生的开了一天,虽然很累,但是回家乡的执念一直在坚持. 开车回家的一路上,一直在回想这些年坚持做的很多事情: ...
- 详解即将于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 ...
- Go程序内存泄露问题快速定位 | Gopher Daily (2021.09.01) ʕ◔ϖ◔ʔ
每日一谚:Less is more. Go技术生态 github针对go仓库提供免费的持续benchmark服务 - https://github.com/marketplace/gobencher ...
最新文章
- 在Linux上使用图形界面的GitHub Desktop
- 详解/etc/profile、/etc/bash.bahsrc、~/.profile、~/.bashrc的用途
- 【LeetCode】617. 合并二叉树
- Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据
- C#——LINQ技术DEMO
- 服务器维护:FTP无法连接
- 筛选出一证多卡 用sql_对比Excel学习SQL(3):对列和行的操作
- 快速上手Tomcat
- c语言变量声明举例,C语言变量的定义和声明
- 基于Pytorch实现CNN卷积神经网络-Mnist数据集
- python两数相加有进退位_Python 之父透露退位隐情,与核心开发团队产生隔阂
- 机器学习:激活函数的作用和原理
- python正则表达式--爬取百度文库内容
- Tomcat 内存溢出对应解决方式
- parted如何将磁盘所有空间格式化_磁盘-使用parted格式化大容量数据盘
- 《阵列信号处理及MATLAB实现》绪论、矩阵代数相关内容总结笔记
- java面试基础题整理(二)
- 包装用超声波密封行业研究及十四五规划分析报告
- python-列表元素绝对值排序
- 网络工程师速记100条知识点(一)
热门文章
- 选择网管软件有哪些好处呢?
- tgp Linux 饥荒,饥荒TGP联机版专用服务器设置
- 图像处理技术之三:降噪处理(中值、均值、最大值、最小值滤波、图像噪声)
- HTML5音频标签audio无法播放的问题
- 直播 | 基于 GitLab 的 CI 实践
- 基于java的停车场管理系统代码分享
- 串口485接法图_终于有人把常用的三种通讯方式:RS485、RS232、RS422讲明白了
- 营收大涨352.7%,优信终迎“第二春”
- 搭建个人网站 (centos 7 + 域名 + 备案)
- 一篇文章吃透Java ArrayList 面试别问,问就是滔滔不绝!