贪心算法

种花问题


题目详情

假设有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去。
给你一个整数数组 flowerbed 表示花坛,由若干 01组成,其中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

我的代码:

class Solution
{public:bool canPlaceFlowers(vector<int>& flowerbed, int n) {int len=flowerbed.size();for(int i=0;i<len;++i){if(flowerbed[i]==0&&(i==0||flowerbed[i-1]==0)&&(i==len-1||flowerbed[i+1]==0)){--n;if(n==0)return true;flowerbed[i]=1;}}return n<=0;}
};

涉及知识点:

  1. 贪心算法(能种就种)

顾名思义,贪心算法或贪心思想采用贪心的策略,保证每次操作都是局部最优的,从而使最
后得到的结果是全局最优的。

思路:

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

1.自己为空
2.左边为空 或者 自己是最左
3.右边为空 或者 自己是最右

中间n==0可跳出循环,末尾n<=0的原因是n可能为负数(当要求种0棵时也执行了一次–n)

这里转载评论区另一种解法:

leetcode-605. 种花问题相关推荐

  1. LeetCode 605. 种花问题

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

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

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

  3. LeetCode——605.种花问题

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

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

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

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

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

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

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

  7. LeetCode 605 种花问题

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

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

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

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

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

  10. 【贪心】605. 种花问题

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

最新文章

  1. Python 正则匹配(re)组的应用
  2. 第十天-linux命令及基础手把手实战
  3. arm 架构_Arm架构之Arm内核解析
  4. cookies,sessionStorage 和 localStorage 的区别?
  5. [C++11]final关键字的使用
  6. java 线程 spring_java中spring里实现多线程
  7. 目标检测论文阅读:Cascade R-CNN: Delving into High Quality Object Detection(CVPR2018)
  8. js中的数组Array定义与sort方法使用示例
  9. 小程序css之字体镂空
  10. oracle 存储过程 胡勇,Oracle SQL:经典查询练手第二篇
  11. 山西计算机应用基本技能,计算机应用基本技能 山西省对口高考题库
  12. java start launcher_hmcl启动失败
  13. 人人能上手:OpenAI发射初学者友好的强化学习教程 | 代码简约易懂
  14. 2018-3-7 色彩的一些知识
  15. 深入浅出设计模式---4、适配器模式
  16. 程序员入门编程,看这10本书,少走10年弯路
  17. 小组取什么名字好_注册公司取什么名字好 八字起名大全
  18. win10计算机性能选项在哪,Win10性能大提升,这些设置让你的电脑直接起飞
  19. 淘淘商城第39讲——使用Spring来管理单机版Redis与集群版Redis
  20. 计算机网络_实验16_网络故障导致环路

热门文章

  1. 如何优雅地测量一只猫的体积,而不使其感到惊恐或受到伤害?
  2. Unity 获取鼠标点击图片时 获取点击位置的像素
  3. 梯度下降法实战案例(波士顿房价)
  4. oracle登陆不了账号被锁定,oracle数据库用户被锁定该怎么解决?Oracle账户被锁定解决方法...
  5. gridsearchcv参数_随机森林算法参数解释及调优
  6. 使用ffmpeg 合并音频视频
  7. C# 后台生成二维码图片
  8. Android vivo手机无法调试安装Apk的解决办法
  9. 车牌识别github资源
  10. html表白画画,超可爱·少女心·表白简笔画:我喜欢你,你就得跟我在一起!