首页 > 其他分享 >力扣605. 种花问题

力扣605. 种花问题

时间:2023-07-07 15:55:53浏览次数:30  
标签:605 int flowerbed 力扣 length num 种花 && true

题目:

假设有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去。

给你一个整数数组 flowerbed 表示花坛,由若干 0 和 1 组成,其中 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
 

提示:

1 <= flowerbed.length <= 2 * 104
flowerbed[i] 为 0 或 1
flowerbed 中不存在相邻的两朵花
0 <= n <= flowerbed.length

 

注意:

注意数组下标越界问题会导致执行错误

 

代码:

class Solution {
public:
    bool canPlaceFlowers(vector<int>& flowerbed, int n) {
        int num = 0;
        int length = flowerbed.size();
        if(length == 1 && flowerbed[0] == 0) return true;
        for(int i = 0; i < length; i++){
            if(flowerbed[i] == 1) continue;
            if(i - 1 >= 0 && i + 1 < length){
                if(flowerbed[i - 1] == 0 && flowerbed[i + 1] == 0){
                    flowerbed[i] = 1;
                    num++;
                }
            }else{
                if(i - 1 < 0 && flowerbed[i + 1] == 0){
                    flowerbed[i] = 1;
                    num++;
                }else if(i + 1 >= length && flowerbed[i - 1] == 0){
                    flowerbed[i] = 1;
                    num++;
                }
            }
        }
        if(num >= n){
            return true;
        }else{
            return false;
        }
    }
};

 

标签:605,int,flowerbed,力扣,length,num,种花,&&,true
From: https://www.cnblogs.com/yccy/p/17535205.html

相关文章

  • 力扣 334. 递增的三元子序列
    题目:给你一个整数数组 nums,判断这个数组中是否存在长度为3的递增子序列。如果存在这样的三元组下标(i,j,k) 且满足i<j<k,使得 nums[i]<nums[j]<nums[k],返回true;否则,返回false。 示例1:输入:nums=[1,2,3,4,5]输出:true解释:任何i<j<k的三元组都......
  • 力扣1. 两数之和
    问题:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。 思考:1.利用暴力法......
  • 力扣 290 字母的是否符合规律规律
    #规律aabb;单词catcatdogdog;符合规律返回true。defwordPattern(规律:str,给定字符串:str):res=给定字符串.split()returnlist(map(规律.index,规律))==list(map(res.index,res))#验证result=wordPattern("aabb","catcatdogdoggg")print......
  • 关于力扣题的sql集训感悟
    在学习SQL的过程中,很多人都会选择参加力扣的SQL集训。力扣是一个面向程序员的在线编程平台,它提供了大量的算法题和数据库题,可以帮助我们提升编程能力和解决实际问题的能力。在参加力扣的SQL集训后,我有了一些感悟和收获,下面我将分享给大家。第一,系统学习和巩固SQL知识。力扣的SQL集......
  • 力扣之旅-0级小白到1级小白
    0到1是一个巨大的进步!海明威说过:“优于别人并不高贵,真正的高贵是优于过去的自己“目录:引言开始的挫折与挑战寻找解题思路和技巧持之以恒与刻意练习克服困难和失败的心态高效学习和准备复习寻求帮助和合作成功的喜悦与未来计划1、引言力扣是一个在线编程挑战平台,提供了广泛的算法和......
  • 力扣217题
    #给你一个整数数组nums。#如果任一值在数组中出现至少两次,返回true;#如果数组中每个元素互不相同,返回false。defremove_dup(nums):unique_nums=list(set(nums))returnunique_numsdefis_xiangdeng(nums):result=remove_dup(nums)ifnums==result:......
  • 力扣---1253. 重构 2 行二进制矩阵
    给你一个 2 行 n 列的二进制数组:矩阵是一个二进制矩阵,这意味着矩阵中的每个元素不是 0 就是 1。第 0 行的元素之和为 upper。第 1 行的元素之和为 lower。第 i 列(从 0 开始编号)的元素之和为 colsum[i],colsum 是一个长度为 n 的整数数组。你需要利用 ......
  • 力扣---53. 最大子数组和
    给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。 示例1:输入:nums=[-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1]的和最大,为 6。示例2:输入:nums=[1]输出:1示例3......
  • 力扣---1186. 删除一次得到子数组最大和
    给你一个整数数组,返回它的某个 非空 子数组(连续元素)在执行一次可选的删除操作后,所能得到的最大元素总和。换句话说,你可以从原数组中选出一个子数组,并可以决定要不要从中删除一个元素(只能删一次哦),(删除后)子数组中至少应当有一个元素,然后该子数组(剩下)的元素总和是所有子数组之中最......
  • CodeForces 605E Intergalaxy Trips 题解
    题意有一张\(n\)个点的有向完全图,边\(i\toj\)有\(p_{i,j}\)的概率出现(\(p_{i,i}=1\))。你要从\(1\)开始,每天可以走一条出边或留在原地,求最优策略下走到\(n\)的期望天数。输出小数(不取模)。\(n\le10^3\)思路设\(f(i)\)表示从\(i\)走到\(n\)的期望天数,那么......