Topic

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

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

Example_1:

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

Exxample_2:

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

Solution:

首先整体思路是计算最大种花量为ans
与需要种花量n进行比较
若ans大于或等于n则能种n朵返回True
若ans小于n则不能种n朵花返回False

之后进行分组讨论

一、对于两侧的两个花坛(索引为0, -1的花坛):
只要两侧的两个花坛旁边的花坛为0
两侧的花坛就可以种花

二、对于中间的花坛(除了索引为0, -1, 1, -2)的花坛:
只有周围的两个花坛均为0时
中间的花坛可以种花
(由于遍历的花坛已经种花,则下一个花坛无法种花,直接跳过下一个花坛)

三、对于索引为1, -2的两个花坛
这两个花坛若周围均为0,则将花种在两侧或这两个花坛结果是一样的
例如

若开始的序列为0,0,0,1
则将话种在索引0,或者索引1都是只能种一朵

Code:

class Solution:def canPlaceFlowers(self, flowerbed: List[int], n: int) -> bool:ans = 0if len(flowerbed) == 1:if flowerbed[0] == 0 and n <= 1:return Trueelif n == 0:return Trueelse:return Falseif flowerbed[0] == 0 and flowerbed[1] == 0:ans += 1flowerbed[0] = 1if flowerbed[-2] == 0 and flowerbed[-1] == 0:ans += 1flowerbed[-1] = 1i = 2while i < len(flowerbed) - 2:if flowerbed[i - 1] == 0 and  flowerbed[i + 1] == 0 and flowerbed[i] != 1:flowerbed[i] = 1ans += 1i += 1i += 1if ans >= n:return Trueelse:return False

Result:

力扣 leetcode 605. 种花问题 (python)相关推荐

  1. leetcode 605. 种花问题(python)

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

  2. 力扣(LeetCode)刷题,简单+中等题(第35期)

    力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升. 第1题:解码异或后的排列 试题要求如下: 回答(C语言): /*** Note: ...

  3. 力扣(LeetCode)刷题,简单+中等题(第34期)

    目录 第1题:整数转罗马数字 第2题:电话号码的字母组合 第3题:二叉树的所有路径 第4题:砖墙 第5题:下一个排列 第6题:括号生成 第7题:删除并获得点数 第8题:全排列 第9题:颜色分类 第10 ...

  4. 力扣(LeetCode)刷题,简单+中等题(第33期)

    目录 第1题:Z 字形变换 第2题:删除字符串中的所有相邻重复项 第3题:基本计算器 II 第4题:螺旋矩阵 第5题:螺旋矩阵 II 第6题:盛最多水的容器 第7题:删除有序数组中的重复项 II 第8 ...

  5. 力扣(LeetCode)刷题,简单+中等题(第32期)

    目录 第1题:数组的度 第2题:托普利茨矩阵 第3题:爱生气的书店老板 第4题:翻转图像 第5题:有效的数独 第6题:无重复字符的最长子串 第7题:区域和检索 - 数组不可变 第8题:二维区域和检索 ...

  6. 力扣(LeetCode)刷题,简单+中等题(第31期)

    目录 第1题:同构字符串 第2题:最后一块石头的重量 第3题:最小路径和 第4题:键盘行 第5题:存在重复元素 II 第6题:两数相加 第7题:三个数的最大乘积 第8题:等价多米诺骨牌对的数量 第9题 ...

  7. 力扣(LeetCode)刷题,简单+中等题(第30期)

    目录 第1题:单词规律 第2题:找不同 第3题:在排序数组中查找元素的第一个和最后一个位置 第4题:使用最小花费爬楼梯 第5题:寻找峰值 第6题:字符串中的第一个唯一字符 第7题:两个数组的交集 II ...

  8. 力扣(LeetCode)刷题,简单+中等题(第29期)

    目录 第1题:分割数组为连续子序列 第2题:翻转矩阵后的得分 第3题:寻找旋转排序数组中的最小值 第4题:乘积最大子数组 第5题:不同路径 第6题:判断路径是否相交 第7题:摆动序列 第8题:单调递增 ...

  9. 力扣(LeetCode)刷题,简单+中等题(第28期)

    目录 第1题:翻转单词顺序 第2题:顺时针打印矩阵 第3题:总持续时间可被 60 整除的歌曲 第4题:字符串的最大公因子 第5题:上升下降字符串 第6题:将数组分成和相等的三个部分 第7题:可被 5 ...

最新文章

  1. ORACLE 创建作业JOB例子
  2. Java中ThreadPoolExecutor的参数理解
  3. python3 获取当前日期_python3获取日期
  4. 电商、快递最后一公里的解决方案
  5. java 的function_Function方法-java
  6. 重磅!华为方舟编译器招募 2000 程序员!
  7. Sismics Reader: Google Reader的一个本地替代品
  8. 获取Element UI中button组件的ID值
  9. idea swagger生成接口文档_Springboot结合swagger-ui自动生成接口文档
  10. 【脑电信号】基于matlab小波变换DWT脑电信号ECG去噪【含Matlab源码 1622期】
  11. spark java jar 依赖_spark提交依赖jar包的解决方法
  12. 游戏必备组件有哪些_抖音直播互动游戏有哪些?直播间热场互动必备的5个小游戏...
  13. 单片机制作时钟倒计时
  14. python实现文本翻译
  15. Access键盘快捷键大全(一)
  16. 编译出现错误:incomplete type ‘WebsocketSession’ used in nested name specifier。
  17. 【新书推荐】【2011.06】唐缺:不一样的推理密谋全集(套装共7册)
  18. IC人物志-冯·诺依曼54年传奇:上帝让他开挂?
  19. 肯塔基大学计算机科学,西肯塔基大学计算机专业
  20. 社区公共安全治理探索:达观舆情信息智能处理解决方案

热门文章

  1. 计算机一级msoffice考试操作题教程,2014年计算机一级考试MSOffice第三章考点解析 10...
  2. 计算机图形学的应用虚拟现实相关,虚拟现实技术中计算机图形学的应用——三维计算机图形.doc...
  3. cp1025支持linux,HP LaserJet Pro CP1025 系列彩 技术规格 | HP®People's Republic of China
  4. 互联网IT就业市场,你要说最有市场的一定是它,linux内核视频教程全套
  5. mysql集群重启失败_Mysql集群重启失败
  6. 【jenkins】创建一个project基础配置、自动化邮件发送、pytest_terminal_summary收集结果
  7. solidworks中加入参考图纸图片
  8. 2015-2016-1 学期《软件工程》第4次作业
  9. 一文搞定选择排序算法
  10. 利用jsp写输入表单制作简历