leetcode-605. 种花问题
贪心算法
种花问题
题目详情
假设有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去。
给你一个整数数组 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
我的代码:
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.自己为空
2.左边为空 或者 自己是最左
3.右边为空 或者 自己是最右
中间n==0可跳出循环,末尾n<=0的原因是n可能为负数(当要求种0棵时也执行了一次–n)
这里转载评论区另一种解法:
leetcode-605. 种花问题相关推荐
- LeetCode 605. 种花问题
1. 题目 假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有.可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去. 给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1 ...
- leetcode 605 种花问题 (c++和python)
目录 题目 思路 c++ python 题目 假设有一个很长的花坛,一部分地块种植了花,另一部分却没有.可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去. 给你一个整数数组 flower ...
- LeetCode——605.种花问题
一.题目 假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有.可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去. 给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表 ...
- leetcode 605. 种花问题(贪心算法)
假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有.可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去. 给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花 ...
- 力扣 leetcode 605. 种花问题 (python)
Topic 假设有一个很长的花坛,一部分地块种植了花,另一部分却没有.可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去. 给你一个整数数组 flowerbed 表示花坛,由若干 0 和 1 ...
- leetcode 605. 种花问题(python)
题目链接 题目描述: 假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有.可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去. 给定一个花坛(表示为一个数组包含0和1,其中0表示没 ...
- LeetCode 605 种花问题
题目描述 假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有.可是,花卉不能种植在 相邻的地块上,它们会争夺水源,两者都会死去.给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表 ...
- LeetCode 605[Python]. 种花问题 假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去。
LeetCode 605. 种花问题 假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有.可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去. 给定一个花坛(表示为一个数组包含0和 ...
- 通俗易懂:贪心算法(三):习题练习 (力扣605种花问题、122买卖股票的最佳时机)
看完本文,可以顺便解决leetcode以下两个题目: 605.种花问题
- 【贪心】605. 种花问题
605. 种花问题 难度简单381 假设有一个很长的花坛,一部分地块种植了花,另一部分却没有.可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去. 给你一个整数数组 flowerbed 表 ...
最新文章
- Python 正则匹配(re)组的应用
- 第十天-linux命令及基础手把手实战
- arm 架构_Arm架构之Arm内核解析
- cookies,sessionStorage 和 localStorage 的区别?
- [C++11]final关键字的使用
- java 线程 spring_java中spring里实现多线程
- 目标检测论文阅读:Cascade R-CNN: Delving into High Quality Object Detection(CVPR2018)
- js中的数组Array定义与sort方法使用示例
- 小程序css之字体镂空
- oracle 存储过程 胡勇,Oracle SQL:经典查询练手第二篇
- 山西计算机应用基本技能,计算机应用基本技能 山西省对口高考题库
- java start launcher_hmcl启动失败
- 人人能上手:OpenAI发射初学者友好的强化学习教程 | 代码简约易懂
- 2018-3-7 色彩的一些知识
- 深入浅出设计模式---4、适配器模式
- 程序员入门编程,看这10本书,少走10年弯路
- 小组取什么名字好_注册公司取什么名字好 八字起名大全
- win10计算机性能选项在哪,Win10性能大提升,这些设置让你的电脑直接起飞
- 淘淘商城第39讲——使用Spring来管理单机版Redis与集群版Redis
- 计算机网络_实验16_网络故障导致环路
热门文章
- 如何优雅地测量一只猫的体积,而不使其感到惊恐或受到伤害?
- Unity 获取鼠标点击图片时 获取点击位置的像素
- 梯度下降法实战案例(波士顿房价)
- oracle登陆不了账号被锁定,oracle数据库用户被锁定该怎么解决?Oracle账户被锁定解决方法...
- gridsearchcv参数_随机森林算法参数解释及调优
- 使用ffmpeg 合并音频视频
- C# 后台生成二维码图片
- Android vivo手机无法调试安装Apk的解决办法
- 车牌识别github资源
- html表白画画,超可爱·少女心·表白简笔画:我喜欢你,你就得跟我在一起!