题目描述

假设有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去。

给你一个整数数组 flowerbed 表示花坛,由若干 0 和 1 组成,其中 0 表示没种植花,1 表示种植了花。另有一个数 n ,能否在不打破种植规则的情况下种入 n 朵花?能则返回 true ,不能则返回 false。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/can-place-flowers
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

示例

示例 1:

输入:flowerbed = [1,0,0,0,1], n = 1
输出:true
示例 2:

输入:flowerbed = [1,0,0,0,1], n = 2
输出:false

特殊示例
输入:flowerbed = [0,0], n = 2
输出:false

输入:flowerbed = [0,0,0,0], n = 3
输出:false

输入:flowerbed = [0], n = 1
输出:true

方法

题目要求是否能在不打破规则的情况下插入n朵花,与直接计算不同,采用“跳格子”的解法只需遍历不到一遍数组,处理以下两种不同的情况即可:

【1】当遍历到index遇到1时,说明这个位置有花,那必然从index+2的位置才有可能种花,因此当碰到1时直接跳过下一格。
【2】当遍历到index遇到0时,由于每次碰到1都是跳两格,因此前一格必定是0,此时只需要判断下一格是不是1即可得出index这一格能不能种花,如果能种则令n减一,然后这个位置就按照遇到1时处理,即跳两格;如果index的后一格是1,说明这个位置不能种花且之后两格也不可能种花(参照【1】),直接跳过3格。

当n减为0时,说明可以种入n朵花,则可以直接退出遍历返回true;如果遍历结束n没有减到0,说明最多种入的花的数量小于n,则返回false。

作者:hatsune-miku-k
链接:https://leetcode.cn/problems/can-place-flowers/solution/fei-chang-jian-dan-de-tiao-ge-zi-jie-fa-nhzwc/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

代码

class Solution:def canPlaceFlowers(self, flowerbed: List[int], n: int) -> bool:i, m = 0, len(flowerbed)while i < m and n > 0:if flowerbed[i] == 1:i += 2elif i == m - 1 or flowerbed[i+1] == 0:n -= 1i += 2else:i += 3return n <= 0

【LeetCode】种花问题相关推荐

  1. Leetcode 种花问题

    假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有.可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去. 给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花 ...

  2. LeetCode 605. 种花问题

    1. 题目 假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有.可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去. 给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1 ...

  3. leetcode 605 种花问题 (c++和python)

    目录 题目 思路 c++ python 题目 假设有一个很长的花坛,一部分地块种植了花,另一部分却没有.可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去. 给你一个整数数组  flower ...

  4. LeetCode 605[Python]. 种花问题 假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去。

    LeetCode 605. 种花问题 假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有.可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去. 给定一个花坛(表示为一个数组包含0和 ...

  5. leetcode,605题【种花问题】

    种花问题 问题描述 测试用例 算法 问题描述 假设有一个很长的花坛,一部分地块种植了花,另一部分却没有. 可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去.给你一个整数数组 flowerb ...

  6. LeetCode——605.种花问题

    一.题目 假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有.可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去. 给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表 ...

  7. Leetcode贪心 种花问题

    You have a long flowerbed in which some of the plots are planted, and some are not. However, flowers ...

  8. leetcode 605. 种花问题(贪心算法)

    假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有.可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去. 给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花 ...

  9. LeetCode刷题-种花问题

    前言说明 算法学习,日常刷题记录. 题目连接 种花问题 题目内容 假设有一个很长的花坛,一部分地块种植了花,另一部分却没有.可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去. 给你一个整数 ...

最新文章

  1. JAVA中的接口和抽象类的区别
  2. 基于SpringBoot和Vue的个人博客系统
  3. operator new,new operator,placement new的区别
  4. 盘点神奇却少为人知的IntelliJ IDEA快捷键
  5. 选择软路由的七大理由
  6. MyBatis的resultType和resultMap的区别
  7. oracle 锁问题的解决
  8. [2013.8.29]对于多线程编程的几点个人见解
  9. 滴滴试行网约车遗失物品处理规则:司机返还遗失物品将收费
  10. java project整合spring和hibernate
  11. 手机音频拼接软件_技能帖 | 专业又好上手的音频剪辑攻略
  12. 根据相机旋转矩阵求解三个轴的旋转角/欧拉角/姿态角 或 旋转矩阵与欧拉角(Euler Angles)之间的相互转换,以及python和C++代码实现
  13. 转 C++异常机制的实现方式和开销分析 白杨 http://baiy.cn
  14. 交流电机,如何用低成本的方案测试电机堵转?
  15. 如何实现bat一键关机
  16. LeCo-33.搜索旋转数组
  17. 89c51的万年历c语言,用AT89C51与DS1302做的万年历c语言编程
  18. Vue Echarts 电子支付图表
  19. Web前端期末大作业-响应式艺术培训机构网页设计(bootstrap+HTML+CSS+JavaScript+)实现
  20. 上传图片计算机没有桌面,为什么我的电脑不能上传任何图片和文件?各位 – 手机爱问...

热门文章

  1. 两天学完软件测试工程师所需的MySQL数据库技术
  2. P25 扩展Auto Scaling 组的大小
  3. 【python】在图片加上数字
  4. git提交文件名大小写的坑 如何填
  5. 如何做好项目管理工作?
  6. 可以删除电脑文件的c语言程序,电脑c盘哪些文件可以删除
  7. 【动画】背景图片旋转(内容不旋转)
  8. 盗墓笔记之缘起与大结局∶张起灵与汪藏海的500年恩怨情仇
  9. 自然数幂和 斯特林数
  10. s7如何让android系统省电,Android五大省电技巧 让你告别省电软件