You have a long flowerbed in which some of the plots are planted, and some are not. However, flowers cannot be planted in adjacent plots.
Given an integer array flowerbed containing 0’s and 1’s, where 0 means empty and 1 means not empty, and an integer n, return if n new flowers can be planted in the flowerbed without violating the no-adjacent-flowers rule.

下面是普通的贪心做法,需要考虑三种边界条件,时间复杂度还可以继续优化.

优化前代码

class Solution {public:bool canPlaceFlowers(vector<int>& flowerbed, int n) {int len = flowerbed.size();if(n == 0) return true;if(len == 1){if(flowerbed[0] == 1) return false;else return true;}if(flowerbed[0] == 0 && flowerbed[1] == 0){flowerbed[0] = 1;n--;}for(int i = 1; i < len-1; i++){if(flowerbed[i-1] == 0 && flowerbed[i+1] == 0 && flowerbed[i] == 0){flowerbed[i] = 1;n--;}if(n == 0) return true;}if(flowerbed[len-2] == 0 && flowerbed[len-1] == 0){flowerbed[len-1] = 1;n--;}if(n != 0) return false;else return true;}
};

倘若当前位置是有花的或者是刚种下花,说明下一个位置不能种花,可以直接跳过。

优化后代码

class Solution {public:bool canPlaceFlowers(vector<int>& flowerbed, int n) {int len = flowerbed.size();if(n == 0) return true;if(len == 1){if(flowerbed[0] == 1) return false;else return true;}if(flowerbed[0] == 0 && flowerbed[1] == 0){flowerbed[0] = 1;n--;}for(int i = 1; i < len-1; i++){if(flowerbed[i] == 1)i++;else if(flowerbed[i-1] == 0 && flowerbed[i+1] == 0){n--;flowerbed[i] = 1;i++;}if(n == 0) return true;}if(flowerbed[len-2] == 0 && flowerbed[len-1] == 0){flowerbed[len-1] = 1;n--;}if(n != 0) return false;else return true;}
};

Leetcode贪心 种花问题相关推荐

  1. leetcode贪心算法题集锦(持续更新中)

    leetcode贪心算法题集锦 leetcode贪心算法题集锦(持续更新中).python 和C++编写. 文章目录 leetcode贪心算法题集锦 一.贪心算法 1.盛最多水的容器 2.买股票的最佳 ...

  2. 八十二、Python | Leetcode贪心算法系列

    @Author:Runsen @Date:2020/7/5 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰 ...

  3. python leetcode_八十二、Python | Leetcode贪心算法系列

    @Author:Runsen @Date:2020/7/5 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰 ...

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

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

  5. leetcode 605 种花问题 (c++和python)

    目录 题目 思路 c++ python 题目 假设有一个很长的花坛,一部分地块种植了花,另一部分却没有.可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去. 给你一个整数数组  flower ...

  6. leetcode 贪心_LeetCode进阶1029-贪心

    闲聊 不知不觉,从开始发算法博客到如今已经过了半月,在这个过程中其实也遇到过很多困难,也一度想过要放弃,深刻体会到没有任何一件事情是可以简简单单敷衍过去的,特别能体会那些工作之余还能十年如一日坚持技术 ...

  7. LeetCode 605. 种花问题

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

  8. leetcode 贪心_贪心算法:给我最好的,现在就要!

    每次做选择的时候都做出当下最好的选择,而不考虑将来的后果.并且期望最终得到的结果是全局最优的. --贪心算法 - Greedy Algorithm 什么时候该使用贪心算法 针对一组数据,定义了限制值. ...

  9. leetcode 贪心_leetcode题解(贪心算法)

    定义 贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择. 也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解. 通常贪心算法的代码会非常短而且思路也非常 ...

最新文章

  1. 新的sublime text已经上传网盘,地址写在下面
  2. javax.mail API
  3. Lua学习笔记(2)
  4. 京东智能巡检机器人问世 京东金融进军企业服务新蓝海
  5. 增长黑客入门:手把手教你增长模型的实践操作
  6. 【转】mac os、linux及unix之间的关系
  7. Java 8 Lambda 表达式被编译成了什么?
  8. VS2012和XE2013的关联和设置问题
  9. MFC消息响应机制及映射机制理解
  10. 图解HTTP笔记(二)——HTTP状态码
  11. 谁说 Java 不能用来跑 Serverless?
  12. 生成式模型(generative) vs 判别式模型(discriminative)
  13. 【EOS】2.4 EOS数据存储
  14. 软件工程考研内容有c语言吗,2020中科大软件工程考研初试科目是什么?
  15. echarts设置主标题和副标题样式
  16. elastic APM 深入测试 二 基于spring cloud微服务框架的分布式追踪
  17. 淘宝订单接口|订单插旗备注,API稳定、QPS高的方案
  18. tableau用数据分组_对数据进行分组
  19. HTML5期末大作业:旅游网页设计与实现——四川成都-(9页 带购物车)
  20. matlab k线图快速画出红色阳线绿色阴线

热门文章

  1. 五、Web App 基础可视组件属性(IVX 快速开发教程)
  2. HTML基础之bit哥的反客为主之道(9)
  3. 115怎么利用sha1下载东西_618“甩”度娘,拥抱115,体验和价格才是王道
  4. 如果觉得午休时间太短怎么办?
  5. 清华教授转述:读博6年未毕业被认定为自控力不够,或将影响个人贷款额度
  6. 猪肉上的红章和蓝章有啥不同?| 今日趣图
  7. 新世纪英汉词典 | 今日最佳
  8. 下班以后看什么,决定你人生的高度
  9. python葡萄酒数据集_利用python分析红葡萄酒数据
  10. 微信 小程序 python 渲染_微信小程序渲染html内容