news 2026/4/25 5:20:26

LeetCode605.种花问题

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LeetCode605.种花问题

题目描述

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

解题思路

连续三个为0则中间位置可以种花
花坛一端(开始或结尾)连续两个为0则当前位置可以种花
只有一个位置且为0则可以种花

核心代码

bool Solution::canPlaceFlowers(vector<int>& flowerbed, int n) { int num = 0; for (int i = 0; i < flowerbed.size(); i++) { if (flowerbed[i] == 0 //判断当前位置是否能种花 && (i == 0 || flowerbed[i - 1] == 0) //或逻辑只要前面条件为真不会判断后面条件,故不会越界访问 && (i == flowerbed.size() - 1 || flowerbed[i + 1] == 0)) { flowerbed[i] = 1; //满足条件,种花 num++; //种花数量加1 i++; //当前位置能种花则相邻位置一定不能种花,跳过相邻位置 }//end if }//end for return num >= n; }

完整可运行代码

#include<iostream> using namespace std; #include<vector> #include<sstream> #include<string> class Solution { public: bool canPlaceFlowers(vector<int>& flowerbed, int n); }; void Init(vector<int>& flowerbed,int &n); //初始化vector声明 int main() { vector<int> flowerbed; int n; Solution s; Init(flowerbed,n); //初始化vector if (s.canPlaceFlowers(flowerbed, n)) cout << "true" << endl; else cout << "false" << endl; system("pause"); return 0; } void Init(vector<int>& flowerbed, int& n) { string input; getline(cin, input); stringstream ss(input); //转换为字符流 int temp; while (ss >> temp) { flowerbed.push_back(temp); } cin >> n; } bool Solution::canPlaceFlowers(vector<int>& flowerbed, int n) { int num = 0; for (int i = 0; i < flowerbed.size(); i++) { if (flowerbed[i] == 0 //判断当前位置是否能种花 && (i == 0 || flowerbed[i - 1] == 0)//或逻辑只要前面条件为真不会判断后面条件,故不会越界访问 && (i == flowerbed.size() - 1 || flowerbed[i + 1] == 0)) { flowerbed[i] = 1; //满足条件,种花 num++; //种花数量加1 i++; //当前位置能种花则相邻位置一定不能种花,跳过相邻位置 }//end if }//end for return num >= n; }

补充知识

i == 0 || flowerbed[i - 1] == 0 //或逻辑只要前面条件为真不会判断后面条件,故不会发生越界访问
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/25 5:16:21

Phi-4-mini-flash-reasoning部署案例:科研团队私有化部署逻辑推理辅助平台

Phi-4-mini-flash-reasoning部署案例&#xff1a;科研团队私有化部署逻辑推理辅助平台 1. 平台介绍 Phi-4-mini-flash-reasoning 是一款专为逻辑推理任务优化的轻量级文本模型&#xff0c;特别适合科研团队进行复杂问题的结构化分析。这个模型在数学推导、逻辑推理和长文本分…

作者头像 李华
网站建设 2026/4/25 5:15:51

2025最权威的六大AI论文工具实际效果

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 如今&#xff0c;处在当下这个阶段&#xff0c;于学术写作范畴之内&#xff0c;一大批论文AI…

作者头像 李华
网站建设 2026/4/25 5:15:44

从零实现GAN生成MNIST手写数字:原理与代码详解

1. 项目概述在计算机视觉领域&#xff0c;生成对抗网络&#xff08;GAN&#xff09;已经成为图像生成任务的重要工具。MNIST手写数字数据集作为深度学习领域的"Hello World"&#xff0c;是初学者理解GAN工作原理的理想起点。本文将详细讲解如何从零开始构建一个能够生…

作者头像 李华
网站建设 2026/4/25 5:15:33

2025届必备的五大AI辅助论文助手实测分析

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 当撰写关于DeepSeek的论文之际&#xff0c;务必要严格依照学术规范来进行&#xff0c;要把重…

作者头像 李华
网站建设 2026/4/25 5:14:52

告别torchpack依赖:用更简单的MMDet3D API重构BEVFusion单卡训练流程

重构BEVFusion训练流程&#xff1a;摆脱torchpack依赖的MMDet3D最佳实践 在3D目标检测领域&#xff0c;BEVFusion因其卓越的多模态融合性能备受关注。但许多开发者在复现和修改其训练流程时&#xff0c;常常被其依赖的torchpack分布式框架所困扰。本文将带你深入分析原始实现的…

作者头像 李华