less than 1 minute read

2 min read 435 words

Problem Statement

leetcode problem link

Solution [Accepted]

public class Solution {
    public bool CanPlaceFlowers(int[] flowerbed, int n) {
        var cannotPlant = new HashSet<int>();
        for(int i = 0; i < flowerbed.Length; i++) {
            if (flowerbed[i] == 1) {
                cannotPlant.Add(i);
                cannotPlant.Add(i - 1);
                cannotPlant.Add(i + 1);
            }
        }
        for (int i = 0; i < flowerbed.Length; i++) {
            if (flowerbed[i] == 0 && !cannotPlant.Contains(i)) {
                n -= 1;
                cannotPlant.Add(i);
                cannotPlant.Add(i + 1);
                cannotPlant.Add(i - 1);
            }
        }

        return n <= 0;
    }
}

Neetcode Solution

public class Solution {
    public bool CanPlaceFlowers(int[] flowerbed, int n) {
        int[] f = new int[flowerbed.Length + 2];
        for (int i = 0; i < flowerbed.Length; i++) {
            f[i + 1] = flowerbed[i];
        }

        for (int i = 1; i < f.Length - 1; i++) {
            if (f[i - 1] == 0 && f[i] == 0 && f[i + 1] == 0) {
                f[i] = 1;
                n--;
            }
        }

        return n <= 0;
    }
}

Leave a comment