leetcode 605 种花问题 (c++和python)
目录
题目
思路
c++
python
题目
假设有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去。
给你一个整数数组 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
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/can-place-flowers
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路
贪心算法,局部最优解也是全局最优解,局部三种情况下,可以种花。
(1)队头00型,队头种上;
(2)队尾00型,队尾种上;
(3)队内000型,队内种上;
再考虑下特例flowerbed=[0], n = 1,即可。
c++
执行用时:16 ms, 在所有 C++ 提交中击败了59.54%的用户
内存消耗:19.7 MB, 在所有 C++ 提交中击败了82.07%的用户
class Solution {
public:bool canPlaceFlowers(vector<int>& flowerbed, int n) {int n_len = flowerbed.size();// 特例 0if (n_len == 1 && flowerbed[0] == 0 && n == 1) return true;// 1 队头00型if (n_len >= 2 && flowerbed[0] == 0 && flowerbed[1] == 0){flowerbed[0] = 1;n--;}// 2 队尾00型if (n_len >= 2 && flowerbed[n_len-2] == 0 && flowerbed[n_len-1] == 0){flowerbed[n_len-1] = 1;n--;}// 3 队内000型for (int i = 1; i < n_len-1; i++){if (flowerbed[i-1] == 0 && flowerbed[i] == 0 && flowerbed[i+1] == 0){flowerbed[i] = 1; n--;}}if (n <= 0) return true;else return false;}
};
python
执行用时:24 ms, 在所有 Python 提交中击败了91.35%的用户
内存消耗:13.6 MB, 在所有 Python 提交中击败了50.00%的用户
class Solution(object):def canPlaceFlowers(self, flowerbed, n):""":type flowerbed: List[int]:type n: int:rtype: bool"""n_len = len(flowerbed)# 特例if n == 0: return Trueif n_len == 1 and flowerbed[0] == 0 and n == 1: return True# 1 队头00if n_len >= 2 and flowerbed[0] == 0 and flowerbed[1] == 0:flowerbed[0] = 1n -= 1# 2 队尾00if n_len >= 2 and flowerbed[n_len-2] == 0 and flowerbed[n_len-1] == 0:flowerbed[n_len-1] = 1n -= 1# 3 队内000for i in range(1, n_len-1):if flowerbed[i-1] == 0 and flowerbed[i] == 0 and flowerbed[i+1] == 0: # 可以种的前提:前后和当前都为0flowerbed[i] = 1 # 种上n -= 1 else:continue # 继续循环if n <= 0: # 种上后,看是否种完了return Trueelse:return False
leetcode 605 种花问题 (c++和python)相关推荐
- 力扣 leetcode 605. 种花问题 (python)
Topic 假设有一个很长的花坛,一部分地块种植了花,另一部分却没有.可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去. 给你一个整数数组 flowerbed 表示花坛,由若干 0 和 1 ...
- leetcode 605. 种花问题(python)
题目链接 题目描述: 假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有.可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去. 给定一个花坛(表示为一个数组包含0和1,其中0表示没 ...
- LeetCode 605. 种花问题
1. 题目 假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有.可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去. 给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1 ...
- LeetCode——605.种花问题
一.题目 假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有.可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去. 给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表 ...
- leetcode 605. 种花问题(贪心算法)
假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有.可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去. 给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花 ...
- LeetCode 605 种花问题
题目描述 假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有.可是,花卉不能种植在 相邻的地块上,它们会争夺水源,两者都会死去.给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表 ...
- LeetCode 605[Python]. 种花问题 假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去。
LeetCode 605. 种花问题 假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有.可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去. 给定一个花坛(表示为一个数组包含0和 ...
- 通俗易懂:贪心算法(三):习题练习 (力扣605种花问题、122买卖股票的最佳时机)
看完本文,可以顺便解决leetcode以下两个题目: 605.种花问题
- leetcode 《简单》 数学部分 Python实现
leetcode <简单> 数学部分 Python实现 ''' Fizz Buzz 写一个程序,输出从 1 到 n 数字的字符串表示.1. 如果 n 是3的倍数,输出"Fizz& ...
最新文章
- 利用MyEclipse开发一个调用webservice接口的程序
- 7个小技巧,老板再也无法留我加班了...
- WinDbg演示IA-32 CPU下的Windows 分页机制下的地址转换过程
- java注解编程_java 注解 基本原理 编程实现
- ICCV 2019 运行LCGN遇到的问题及解决办法
- 浅谈equals和==的区别
- c语言实现双链表的基本操作—增删改查
- 为什么本地使用js或jquery操作cookie在谷歌浏览器chrome中不生效?
- Html5里frameSet不在使用的替代方法,使用ifram
- .net core 集成 sentry 进行异常报警
- (十三) 深入浅出TCPIP之setsockopt参数详解
- Linux如何生成列表
- 实用干货!大数据入门的常用技术栈全在这里了
- 炮灰模型---------- 对女生选择追求者的数学模型的建立
- 2018小米商城首页html,html+css实现小米商城首页静态页面
- 手把手教你使用R语言做竞争风险模型并绘制列线图
- 算法的时间复杂度和空间复杂度-总结
- linkis标准版安装教程
- AppCompatActivity设置透明主题
- 研究是一门艺术 前三章节笔记
热门文章
- YQP36预加水盘式成球机设计(论文+DWG图纸)
- windows内核开发学习笔记十八:IRP 处理的标准模式
- 大牛约翰·卡马克语录
- rust为什么找不到服务器,rust找不到朋友的服务器 | 手游网游页游攻略大全
- eclipse中包里建包
- Python:打印九九乘法口诀表
- springCloud alibaba: Sentinel--服务容错
- 关于移动Web性能的5个神话
- Halting problem
- PM,RD,FE,UE,UI,QA,OP,DBA,BRD,MRD, PRD,FSD等缩写的全称解析