[leetcode]: 605. Can Place Flowers

╰+攻爆jí腚メ 2022-06-14 04:44 244阅读 0赞

1.题目

Suppose 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 - they would compete for water and both would die.

Given a flowerbed (represented as an array containing 0 and 1, where 0 means empty and 1 means not empty), and a number n, return if n new flowers can be planted in it without violating the no-adjacent-flowers rule.
用一维数组表示要种花的花床,0表示未种,1表示已种。相邻两处不能同时种花。给出花床的数组和需要种花的数量n,判断是否能把n个花种下去。

Example 1:
Input: flowerbed = [1,0,0,0,1], n = 1
Output: True

Example 2:
Input: flowerbed = [1,0,0,0,1], n = 2
Output: False

2.分析

相邻位置不能同时种花,那么可以种花分三种情况:
1) 数组首部 00x 头部的0可以种花
2) 数组中间 000 中间的0可以种花
3) 数组尾部 x00 尾部的0可以种花
遍历一遍数组即可。

3.代码

  1. class Solution {
  2. public:
  3. bool canPlaceFlowers(vector<int>& flowerbed, int n) {
  4. int length = flowerbed.size();
  5. int i = 0;
  6. for (; i < length&&n > 0; i++) {
  7. if (flowerbed[i] == 0) {
  8. int left = i - 1 > 0 ? i - 1 : 0;
  9. int right = i + 1 < length - 1 ? i + 1 : length - 1;
  10. if (flowerbed[left] == 0 && flowerbed[right] == 0) {
  11. //左右两边都没有种花
  12. flowerbed[i] = 1;
  13. --n;
  14. }
  15. }
  16. }
  17. return n == 0;
  18. }
  19. };

发表评论

表情:
评论列表 (有 0 条评论,244人围观)

还没有评论,来说两句吧...

相关阅读

    相关 LeetCode605. 种花问题

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