sudopower

lc_605

LC: 605: Can place flowers

Link to problem

Solution 2 – Greedy

func canPlaceFlowers(flowerbed []int, n int) bool {
    if n==0 {
        return true
    }


    max:= len(flowerbed)-1

    for i:=0;i<=max;i++{
        if flowerbed[i]==0{
            leftEmpty := i==0 || flowerbed[i-1]==0
            rightEmpty := i==max || flowerbed[i+1]==0

            if leftEmpty && rightEmpty {
                flowerbed[i]=1
                n--

                if n<1{
                    return true
                }
            }
        }
    }    


    return n<1
}

Solution 1 – messy

func canPlaceFlowers(flowerbed []int, n int) bool {
    if n==0 {
        return true
    }

    if len(flowerbed)==1 {
        if flowerbed[0]!=0 {
            return false
        }
        return true
    }

    if len(flowerbed)<3 {
        if flowerbed[0]!=flowerbed[1]{
            return false
        }
        if n<2{
            return true
        }        
        return false
    }

    if flowerbed[0]==0 && flowerbed[1]==0 {
        flowerbed[0]=1
        n--        
    } 

    for i:=1;i<len(flowerbed)-2;i++{
        if flowerbed[i]==0 && flowerbed[i-1]==0 && flowerbed[i+1]==0{
            flowerbed[i]=1
            n--
        }
    }    

    if n<1{
        return true
    }

    if n ==1 && flowerbed[len(flowerbed)-2]==0 && flowerbed[len(flowerbed)-1]==0 {
        flowerbed[len(flowerbed)-1]=1
        n--
        return true
    } 

    return false
}

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Blogs