可以在C ++中放置鲜花

假设我们有一个长长的花坛,其中种植了一些地块,而有些则是空的。现在有一个限制,不能在相邻的地块上种花,它们会争夺水,而且都死了。因此,如果我们有一个花坛,用包含0和1的数组表示,则0表示空白,1表示填充,并且还给出了数字n,我们必须检查是否可以在其中种植n朵新花而不违反否定原则。是否有相邻的花规则。

因此,如果输入像花圃= [1,0,0,0,1],n = 1,则输出将为True

为了解决这个问题,我们将遵循以下步骤-

  • 如果花床的大小<n,则-

    • 返回假

  • 如果花床的大小等于1,花床[0]的大小等于0,n的值等于1,则-

    • 返回真

  • 对于初始化i:= 0,当i <花坛的大小时,更新(将i增加1),执行-

    • 返回真

    • 如果我等于0,则-

    • 否则,当我等于花坛的大小-1时,则-

    • 否则,当flowerbed [i]等于0且flowerbed [i + 1]等于0且flowerbed [i-1]等于0时,则-

    • 花坛[0]:= 1

    • (将n减1)

    • 如果flowerbed [i]等于0,而flowerbed [1]等于0,则-

    • 花坛[i]:= 1

    • (将n减1)

    • 如果flowerbed [i]等于0,并且flowerbed [i-1]不等于1,则-

    • 花坛[i]:= 1

    • (将n减1)

    • 如果n> 0,则-

    • 如果n等于0,则-

    • 如果n等于0,则-

      • 返回真

    • 返回假

    例 

    让我们看下面的实现以更好地理解-

    #include <bits/stdc++.h>
    using namespace std;
    class Solution {
    public:
       bool canPlaceFlowers(vector<int>& flowerbed, int n) {
          if (flowerbed.size() < n)
             return false;
          if (flowerbed.size() == 1 && flowerbed[0] == 0 && n == 1)
             return true;
          for (int i = 0; i < flowerbed.size(); i++) {
             if (n > 0) {
                if (i == 0) {
                   if (flowerbed[i] == 0 && flowerbed[1] == 0) {
                      flowerbed[0] = 1;
                      n--;
                   }
                }
                else if (i == flowerbed.size() - 1) {
                   if (flowerbed[i] == 0 && flowerbed[i - 1] != 1) {
                      flowerbed[i] = 1;
                      n--;
                   }
                }
                else if (flowerbed[i] == 0 && flowerbed[i + 1] == 0 && flowerbed[i - 1] == 0) {
    flowerbed[i] = 1;
                   n--;
                }
             }
             if (n == 0) {
                return true;
             }
          }
          if (n == 0) {
             return true;
          }
          return false;
       }
    };
    main(){
       Solution ob;
       vector<int> v = {1,0,0,0,1};
       cout << (ob.canPlaceFlowers(v, 1));
    }

    输入值

    {1,0,0,0,1}, 1

    输出结果

    1