跳至主要內容

605_种花问题

T4mako算法数组贪心小于 1 分钟

605_种花问题

简单

题目描述open in new window

解题思路:

  • 判断数组可种植多少朵花,与n比较
  • 通过记录一组连续的0的左右边界,计算可种植多少多花
  • 注意数组左右两头要多加一个0
class Solution {
    public boolean canPlaceFlowers(int[] flowerbed, int n) {
        int left = -1; // 定义最左边的0
        int plant = 0; // 可种数量
        for (int i = 0; i < flowerbed.length; i++) {
            // 后面的都为0也种不下
            if(plant + getFlowers(left,flowerbed.length) < n) return false;
            // 找下一个与1紧贴的0
            if(flowerbed[i] == 1){
                plant += getFlowers(left,i-1);
                left = ++i;
            }
        }
        // 加上末尾为0的情况
        if(flowerbed[flowerbed.length-1] == 0) plant += getFlowers(left,flowerbed.length);
        return plant >= n ?  true : false;
    }

    // 计算多个0可种几多花
    public int getFlowers(int left,int right){
        return (right - left) / 2;
    }
}
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.5