博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode每日一题: 种花问题(No.605)
阅读量:5959 次
发布时间:2019-06-19

本文共 901 字,大约阅读时间需要 3 分钟。

题目:种花问题


假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去。给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花),和一个数 n 。能否在不打破种植规则的情况下种入 n 朵花?能则返回True,不能则返回False。复制代码

示例:


输入: flowerbed = [1,0,0,0,1], n = 1输出: True输入: flowerbed = [1,0,0,0,1], n = 2输出: False复制代码

思考:


遍历数组,判断第count个元素前一个和后一个元素都为空才能种花,还要考虑到第一个和最后个。满足种花条件的将数组对应位置赋值为1即种上花,然后将n--需要种的花减掉1,count++跳过当前位置下一个,因为已经种过花了。最后判断n是否等于0即花是否全种完。复制代码

实现:


class Solution {    public boolean canPlaceFlowers(int[] flowerbed, int n) {        int length = flowerbed.length;        for (int count = 0; count < length && n > 0; count++) {            if (flowerbed[count] == 0 && (count == 0 || flowerbed[count - 1] == 0) && (count == length - 1|| flowerbed[count + 1] == 0)) {                flowerbed[count] = 1;                n--;                count++;            }        }        return n == 0;    }}复制代码

转载于:https://juejin.im/post/5cc1424e6fb9a0320a6289ea

你可能感兴趣的文章
细说 Java 的深拷贝和浅拷
查看>>
go配置文件读取
查看>>
通过项目梳理vuex模块化 与vue组件管理
查看>>
每天阅读一个 npm 模块(2)- mem
查看>>
React Native 中的状态栏
查看>>
Python 抓取微信公众号账号信息
查看>>
Spring源码系列:依赖注入-引言
查看>>
在Node.js中使用C++模块
查看>>
Redis持久化RDB和AOF优缺点是什么?
查看>>
iOS-性能优化深入探究
查看>>
阿里云Redis混合存储典型场景:如何轻松搭建视频直播间系统
查看>>
基于阿里云服务搭建的典型技术架构
查看>>
JavaEE PayPal 上线流程
查看>>
Android设备wifi开发
查看>>
xshell能ping通虚拟机,不能连接虚拟机
查看>>
任意层级树型数据的遍历和过滤
查看>>
iOS 防止反编译加密方法
查看>>
微信小程序开发的一点心得
查看>>
关于用nodejs编写管理系统
查看>>
深入理解node stream机制及其实现原理
查看>>