专栏首页Michael阿明学习之路LeetCode 605. 种花问题

LeetCode 605. 种花问题

1. 题目

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

给定一个花坛(表示为一个数组包含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, 20000]。
n 是非负整数,且不会超过输入数组的大小。

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

2. 解题

  • 题目意思是,一个为0的位子,前后都是0才可以种植花朵
  • 用两个bool变量表示当前位置i的前后一个位置有没有花,注意边界处理
class Solution {
public:
    bool canPlaceFlowers(vector<int>& flowerbed, int n) {
    	if(n == 0)//不用种,肯定可以
    		return true;
        int i = 0, count = 0, end = flowerbed.size()-1;
        bool prevFlower = false;//前面没有花
        bool nextFlower = false;//后面有没有花
        while(i <= end)
        {
        	if(flowerbed[i] == 0)//当前可以种花
        	{
        		nextFlower = (i==end ? false : flowerbed[i+1]);
        		prevFlower = (i==0 ? false : flowerbed[i-1]);
        		if(!prevFlower && !nextFlower)
        		{
        			flowerbed[i] = 1;//种上一朵花
        			count++;//计数+1
        			if(count == n)
        				return true;
        		}
        	}
        	++i;
        }
        return false;
    }
};

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • LeetCode 1318. 或运算的最小翻转次数(位运算)

    你可以对 a 和 b 的二进制表示进行位翻转操作,返回能够使按位或运算 a OR b == c 成立的最小翻转次数。

    Michael阿明
  • LeetCode 953. 验证外星语词典

    某种外星语也使用英文小写字母,但可能顺序 order 不同。 字母表的顺序(order)是一些小写字母的排列。

    Michael阿明
  • LeetCode 831. 隐藏个人信息

    定义名称 name 是长度大于等于 2 (length ≥ 2),并且只包含小写字母 a-z 和大写字母 A-Z 的字符串。

    Michael阿明
  • 三大EDA巨头在光芯片领域的努力

    最近因为华为遭美国制裁,芯片领域得到了社会广泛的关注,这两天的媒体舆论开始关注EDA软件。今天和COO聊起EDA软件,问起来为啥你们光芯片不搞EDA。借此机会,...

    光学小豆芽
  • 区块链3.0:拥抱EOS

    EOS是当下最火的区块链技术,被社会广泛看好为下一代区块链3.0。不同于以太坊的学习,EOS的主语言是C++,本文作为EOS研究的首篇文章,重点介绍EOS的创...

    文彬
  • 【刘文彬】区块链3.0:拥抱EOS

    原文链接:醒者呆的博客园,https://www.cnblogs.com/Evsward/p/eos-intro.html

    圆方圆学院
  • Kotlin的委托属性和区间

    委托属性 委托属性 是一种通过委托实现拥有 getter 和可选 setter 的 属性,并允许实现可复用的自定义属性。例如: class Example { ...

    xiangzhihong
  • Kotlin开发笔记之委托属性与区间(译)

    本文主要给大家介绍了关于Kotlin委托属性与区间的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

    砸漏
  • 字符串排序---字典序

    本周我们分享一个获取全排列的算法。这道题当时也是花了蛮久的时间才跟着题解写出来!小白经历了这道题目的“煎熬”之后,就为大家保驾护航,一起轻松拿下此题吧!

    鹏-程-万-里
  • Sublime Text 设置不记住打开的文件

    飞奔去旅行

扫码关注云+社区

领取腾讯云代金券