605. 种花问题

难度简单381

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

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

示例 1:

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

示例 2:

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

提示:

  • 1 <= flowerbed.length <= 2 * 104
  • flowerbed[i] 为 0 或 1
  • flowerbed 中不存在相邻的两朵花
  • 0 <= n <= flowerbed.length

解析:

1.贪心

【思路】
从左向右遍历花坛,在可以种花的地方就种一朵,能种就种(因为在任一种花时候,不种都不会得到更优解),就是一种贪心的思想
这里可以种花的条件是:

自己为空
左边为空 或者 自己是最左
右边为空 或者 自己是最右
最后判断n朵花是否有剩余,为了效率起见,可以在种花的过程中做判断,一旦花被种完就返回true

class Solution {
public:bool canPlaceFlowers(vector<int>& flowerbed, int n) {int total=0;int h=flowerbed.size();for (int i=0;i<h;i++){//顺序不能乱,先判断是不是i==0或者i==h-1 是则不执行||后面的内容if(flowerbed[i] == 0 && (i == 0 || flowerbed[i-1] == 0) && (i == h-1 || flowerbed[i+1] == 0)) {total++;flowerbed[i]=1;}}if(total>=n) return true;else return false; }
};

2.前后添0,统一判断条件

class Solution {
public:bool canPlaceFlowers(vector<int>& flowerbed, int n) {flowerbed.insert(flowerbed.begin(),0);flowerbed.insert(flowerbed.end(),0);int h=flowerbed.size();int total=0;for (int i=0;i<h-2;i++){if(flowerbed[i]==0 &&flowerbed[i+1]==0&&flowerbed[i+2]==0){flowerbed[i+1]=1;total++;}}if (total>=n) return true;else    return false;}
};

【贪心】605. 种花问题相关推荐

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

    605. 种花问题 题目描述: 假设有一个很长的花坛,一部分地块种植了花,另一部分却没有.可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去. 给你一个整数数组  flowerbed 表示花 ...

  2. 通俗易懂:贪心算法(三):习题练习 (力扣605种花问题、122买卖股票的最佳时机)

    看完本文,可以顺便解决leetcode以下两个题目: 605.种花问题

  3. 605. 种花问题003(贪心算法+思路+详解)

    一:题目 假设有一个很长的花坛,一部分地块种植了花,另一部分却没有.可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去. 给你一个整数数组 flowerbed 表示花坛,由若干 0 和 1 ...

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

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

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

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

  6. 数组:605.种花问题

    题目描述: 假设有一个很长的花坛,一部分地块种植了花,另一部分却没有.可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去. 给你一个整数数组  flowerbed 表示花坛,由若干 0 和 ...

  7. LeetCode 605. 种花问题

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

  8. LeetCode 605 种花问题

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

  9. 力扣 leetcode 605. 种花问题 (python)

    Topic 假设有一个很长的花坛,一部分地块种植了花,另一部分却没有.可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去. 给你一个整数数组 flowerbed 表示花坛,由若干 0 和 1 ...

最新文章

  1. git 拉去merged 仓库的代码步骤
  2. python爬虫源码怎么使用_Python爬虫具体应该怎么使用?
  3. PPT中视频投影问题
  4. 一个关于导出excel模板的实例
  5. MacOS录制GIF/录屏的工具
  6. H.264码率控制机制
  7. SQL运行速度慢?查查中间件
  8. python爬虫京东评论_python爬京东评论
  9. Fiddler安装教程(图文版)
  10. Arcgis Server开发使用query报错
  11. bufferedreader读取中文乱码_Python OpenCV与中文相关的三个常见问题
  12. 从APP到API:金融科技C端到B端的思考
  13. python网络爬虫网易云音乐guihub_GitHub - GreatV/CloudMusic-Crawler: 网易云音乐爬虫,数据可视化。...
  14. 如何面对大容量的数据存储
  15. #UML# Astah+Doxygen 将C++源码映射为类图
  16. 2017年11月19日实验感想
  17. 斐讯w2Android Wear,有人研究过W2的连接QRcode吗?
  18. 树洞程序php,微信公众平台开发(65) 微博树洞_PHP教程
  19. 脚本(script)——通俗易懂去理解
  20. Testlink 使用步骤

热门文章

  1. linux ls和cd命令详解,Linux基础cd、pwd和ls命令
  2. IBM Rational software Architect 9.0安装包百度网盘
  3. 服务器虚拟化iecs,中兴通讯中标中国电信2012云计算集采
  4. 外汇平台正规排行榜 Flyerinternational稳居前三
  5. 2021玉林芳草中学高考成绩查询,「分数线」2020年成都玉林中学招生录取分数线...
  6. Python基础篇学习
  7. 用c 语言求纸对折的次数,纸张对折新纪录:13次
  8. 【原创】软件测试经验图谱硬技能之业务逻辑
  9. 看完这一篇,你也可以自如地掌握字节码插桩
  10. QT5串口编程——编写简单的上位机