【LeetCode每日一题】Leetcode 605.种花问题

news/2024/12/19 7:03:59/

Leetcode 605.种花问题

题目描述:

假设有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去。
给你一个整数数组 flowerbed 表示花坛,由若干 01 组成,其中 0 表示没种植花,1 表示种植了花。另有一个数 n
能否在不打破种植规则的情况下种入 n 朵花?能则返回 true ,不能则返回 false

示例 1:

输入: flowerbed = [1,0,0,0,1], n = 1
输出: true

示例 2:

输入: flowerbed = [1,0,0,0,1], n = 2
输出: false

示例 3:

输入: flowerbed = [0,0,0,0,0], n = 3
输出: true

提示:

  • 1 <= flowerbed.length <= 2 * 10^4
  • flowerbed[i]01
  • flowerbed 中不存在相邻的两朵花
  • 0 <= n <= flowerbed.length
Java 实现代码
class Solution {public boolean canPlaceFlowers(int[] flowerbed, int n) {int len = flowerbed.length;int count = 0;for (int i = 0; i < len; i++) {// 如果当前位置是0,并且前后位置都为0,则当前位置可以种花if (flowerbed[i] == 0 && (i == 0 || flowerbed[i - 1] == 0) && (i == len - 1 || flowerbed[i + 1] == 0)) {flowerbed[i] = 1; // 在当前位置种花count++; // 增加种花的数量}}return count >= n; // 判断是否种下了n朵花}
}

解题思路:

  1. 遍历花坛:我们需要遍历 flowerbed 数组,检查每个位置是否可以种花。为了避免相邻的花互相干扰,我们只能在相邻位置为空的情况下种花。
  2. 条件判断:在遍历过程中,每当我们遇到一个空位 0,需要判断其前后位置:
    • 如果当前位置为 0,并且前后位置(如果存在)也为 0,则可以在该位置种花。
  3. 尽可能种花:每当满足条件时,我们种一朵花,并将计数器加一,直到种下 n 朵花或者遍历完成。
  4. 边界条件:需要注意处理数组的首尾位置。
解题分析:
  • 时间复杂度O(n)
  • 空间复杂度O(1)

http://www.ppmy.cn/news/1556327.html

相关文章

什么是docker,docker解决了什么问题

什么是docker&#xff0c;docker解决了什么问题 用docker可以解决什么问题 在日常开发中&#xff0c;我们可能经常面临这样的问题 环境一致性问题&#xff0c;同一个程序&#xff0c;可能在开发环境能运行&#xff0c;但是到测试、生产环境就会遇到各种各样的问题&#xff0…

Java中的设计模式全解及电商应用场景示例

Java中的设计模式全解及电商应用场景示例 设计模式是软件开发中常用的解决方案&#xff0c;提供了可复用的代码结构和设计原则。本文将详细介绍Java中的23种设计模式&#xff0c;并结合电商实际应用场景进行示例说明。 1. 创建型模式 1.1 单例模式&#xff08;Singleton Patt…

用户输入 %%%% , MYSQL中数据全被查询出来的Bug(GORM)

1.Bug 奇遇记 在工作中遇到的一个神奇小bug. 那是一天大雪天上午 , 打开飞书 , 哦吼 , 新bug. 看到这个bug当时就感觉出来问题出在哪里了, 仔细查看后 , 坏了啊, 这一个项目基本上涉及到模糊查询的都有这个bug. 并且 , 在我之前实习的公司 , 在学校做的项目 , 全部都存在这个bu…

基于RRT(Rapidly-exploring Random Tree)的无人机三维路径规划,MATLAB代码

RRT&#xff08;Rapidly-exploring Random Tree&#xff09;算法是一种基于采样的路径规划方法&#xff0c;它通过递增地构建一棵树来探索配置空间。算法从一个初始点&#xff08;通常是起点&#xff09;开始&#xff0c;通过随机采样的方式逐步扩展树结构&#xff0c;直到达到…

社区生活超市系统|Java|SSM|JSP|

【技术栈】 1⃣️&#xff1a;架构: B/S、MVC 2⃣️&#xff1a;系统环境&#xff1a;Windowsh/Mac 3⃣️&#xff1a;开发环境&#xff1a;IDEA、JDK1.8、Maven、Mysql5.7 4⃣️&#xff1a;技术栈&#xff1a;Java、Mysql、SSM、Mybatis-Plus、JSP、jquery,html 5⃣️数据库可…

Flutter Navigator2.0的原理和Web端实践

01 背景与动机 在Navigator 2.0推出之前&#xff0c;Flutter主要通过Navigator 1.0和其提供的 API&#xff08;如push(), pop(), pushNamed()等&#xff09;来管理页面路由。然而&#xff0c;Navigator 1.0存在一些局限性&#xff0c;如难以实现复杂的页面操作&#xff08;如移…

重生之我在异世界学编程之算法与数据结构:算法复杂度介绍篇

大家好&#xff0c;这里是小编的博客频道 小编的博客&#xff1a;就爱学编程 很高兴在CSDN这个大家庭与大家相识&#xff0c;希望能在这里与大家共同进步&#xff0c;共同收获更好的自己&#xff01;&#xff01;&#xff01; 本文目录 引言正文一 时间复杂度1. 常数时间复杂度…

梳理你的思路(从OOP到架构设计)_认识EIT造形与内涵

目录 1、 认识类(Class)与内涵 2、 认识EIT造形与内涵 EIT造形&#xff1a; 类造形的组合​编辑 复习EIT的基本形与变形​编辑 不同内涵 EIT造形 1、 认识类(Class)与内涵 回顾 类(Class)是比较小的造形 各种不同内涵&#xff0c;可以透过类(Class)的形式(Form)来呈现出…