目录

题目

思路

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)相关推荐

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

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

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

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

  3. LeetCode 605. 种花问题

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

  4. LeetCode——605.种花问题

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

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

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

  6. LeetCode 605 种花问题

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

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

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

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

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

  9. leetcode 《简单》 数学部分 Python实现

    leetcode <简单> 数学部分 Python实现 ''' Fizz Buzz 写一个程序,输出从 1 到 n 数字的字符串表示.1. 如果 n 是3的倍数,输出"Fizz& ...

最新文章

  1. 利用MyEclipse开发一个调用webservice接口的程序
  2. 7个小技巧,老板再也无法留我加班了...
  3. WinDbg演示IA-32 CPU下的Windows 分页机制下的地址转换过程
  4. java注解编程_java 注解 基本原理 编程实现
  5. ICCV 2019 运行LCGN遇到的问题及解决办法
  6. 浅谈equals和==的区别
  7. c语言实现双链表的基本操作—增删改查
  8. 为什么本地使用js或jquery操作cookie在谷歌浏览器chrome中不生效?
  9. Html5里frameSet不在使用的替代方法,使用ifram
  10. .net core 集成 sentry 进行异常报警
  11. (十三) 深入浅出TCPIP之setsockopt参数详解
  12. Linux如何生成列表
  13. 实用干货!大数据入门的常用技术栈全在这里了
  14. ‍炮灰模型---------- 对女生选择追求者的数学模型的建立
  15. 2018小米商城首页html,html+css实现小米商城首页静态页面
  16. 手把手教你使用R语言做竞争风险模型并绘制列线图
  17. 算法的时间复杂度和空间复杂度-总结
  18. linkis标准版安装教程
  19. AppCompatActivity设置透明主题
  20. 研究是一门艺术 前三章节笔记

热门文章

  1. YQP36预加水盘式成球机设计(论文+DWG图纸)
  2. windows内核开发学习笔记十八:IRP 处理的标准模式
  3. 大牛约翰·卡马克语录
  4. rust为什么找不到服务器,rust找不到朋友的服务器 | 手游网游页游攻略大全
  5. eclipse中包里建包
  6. Python:打印九九乘法口诀表
  7. springCloud alibaba: Sentinel--服务容错
  8. 关于移动Web性能的5个神话
  9. Halting problem
  10. PM,RD,FE,UE,UI,QA,OP,DBA,BRD,MRD, PRD,FSD等缩写的全称解析