首页 > 分享 > Leetcode刷题笔记 605. 种花问题

Leetcode刷题笔记 605. 种花问题

605. 种花问题

时间:2021年1月1日
知识点:贪心
题目链接

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

给你一个整数数组 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 * 104flowerbed[i] 为 0 或 1flowerbed 中不存在相邻的两朵花0 <= n <= flowerbed.length

解法

贪心算法 自己模拟一遍如果当前位置种花了 至少在i+2的位置才能种花如果当前位置没种花下个位置也没种花 这个位置可以种花 注意边界的情况否则 那么至少在i+3的位置才能种花

代码

//头文件 #include "cheader.h" class Solution { public: bool canPlaceFlowers(vector<int>& flowerbed, int n) { int all = flowerbed.size(); for(int i = 0;i < all;){ if(flowerbed[i] == 1) i+=2; else if(flowerbed[i] == 0){ if(i == all - 1 || flowerbed[i+1] ==0){ n--; i+=2; } else i+=3; } } return n <= 0; } }; int main() { vector<int> flowerbed{1,0,0,0,1}; Solution s; int n = 1; cout<<s.canPlaceFlowers(flowerbed, n)<<endl; return 0; }

123456789101112131415161718192021222324252627282930

今天也是爱zz的一天哦!

相关知识

力扣 leetcode 605. 种花问题 (python)
【贪心】605. 种花问题
红色花朵笔刷花卉装饰笔刷盛开鲜花笔刷下载平面广告素材免费下载(图片编号:745538)
力扣打卡2021.1.1种花问题
为浇灌一个半径为10米的花坛,园艺师要在花坛布置若干个旋转喷头,但库房里有浇灌半
调节花期宜早不宜迟,以幼穗分化什么期前采用措施效果最好。
花圈阅读题答案
“花卉与花”这组词的不同表现为()。
从零开始学种花,让新手成为园艺达人的养花技巧
技术人员在苗圃里种植了A、B、C三种花卉,并定期要给三种花卉浇水,A花每5天浇水一次,B花每4天浇水一

网址: Leetcode刷题笔记 605. 种花问题 https://m.huajiangbk.com/newsview3125.html

所属分类:花卉
上一篇: 北京各处冬残奥会主题花坛鲜花置换
下一篇: 60万盆鲜花就位!桂林盛装迎新春