首页 > 编程语言 >力扣605(java&python)-种花问题(简单)

力扣605(java&python)-种花问题(简单)

时间:2022-10-20 23:46:25浏览次数:49  
标签:605 count 位置 java python flowerbed int 种花 当前

题目:

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

给你一个整数数组  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

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/can-place-flowers
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路:

就是当前位置的左右相邻位置都没有种花(为0),那么当前位置就为种花(设为1),能种花存在以下几种情况:

  • 当前位置flowerbed[i] == 0,并且当前位置是数组的末尾:i = flowerbed.length - 1,并且它的前一个位置没有种花:flowerbed[i -1] == 0;
  • 当前位置flowerbed[i] == 0,并且当前位置是数组第一个:i == 0,并且它的下一个位置没有种花:flowerbed[i + 1] == 0;
  • 当前位置flowerbed[i] == 0,并且数组只有一个元素,i == 0并且 i = flowerbed.length - 1;
  • 当前位置flowerbed[i] == 0,并且它的前一位置没有种花,flowerbed[i -1] == 0,并且它的后一位置也没有种花:flowerbed[i +1] == 0;

java代码:

 1 class Solution {
 2     public boolean canPlaceFlowers(int[] flowerbed, int n) {
 3         int m = flowerbed.length;
 4         int count = 0;
 5         for(int i = 0; i < m; i++){
 6             if(flowerbed[i] == 0 && (i == m-1 || flowerbed[i+1] == 0) && (i == 0 || flowerbed[i-1] == 0)){
 7                 flowerbed[i] = 1;
 8                 count ++;
 9             }
10         }
11         return count >= n;
12     }
13 }

python3代码:

1 class Solution:
2     def canPlaceFlowers(self, flowerbed: List[int], n: int) -> bool:
3         m = len(flowerbed)
4         count = 0
5         for i in range(m):
6             if flowerbed[i] == 0 and (i == 0 or flowerbed[i - 1] == 0) and (i == m - 1 or flowerbed[i + 1] == 0):
7                 flowerbed[i] = 1
8                 n -= 1
9         return n <= 0

标签:605,count,位置,java,python,flowerbed,int,种花,当前
From: https://www.cnblogs.com/liu-myu/p/16811782.html

相关文章

  • java----Collection集合
    Collection集合1、集合与数组的相同点是什么?  都是容器,可以存储多个数据2、集合与数组的不同点是什么?  ①.数组的长度是不可变的,集合的长度是可变的  ②.......
  • JavaScript实现数据结构 -- 栈
    栈栈是一种==后进先出==的数据结构。JS模拟栈虽然JavaScript中没有栈,但是我们可以用数组来实现栈的功能。 //定义一个数组用来模拟栈 conststack=[]; //用数组......
  • JavaScript实现数据结构 -- 队列
    队列队列是一个先进先出的数据结构。JS模拟队列虽然JavaScript中没有队列,但是我们可以用数组来实现队列的功能。 //用数组来模拟队列 constqueue=[]; //入队 q......
  • JavaScript实现数据结构 -- 链表
    链表链表和数组一样是有多个元素组成的列表;不同的是链表元素存储不连续,用next指针连接在一起;链表的特点插入、删除不需要移动元素;不必事先分配存储空间;所需空间与长......
  • 《Java并发编程的艺术》读书笔记:二、Java并发机制的底层实现原理
    二、Java并发机制底层实现原理这里是我的《Java并发编程的艺术》读书笔记的第二篇,对前文有兴趣的朋友可以去这里看第一篇:一、并发编程的目的与挑战有兴趣讨论的朋友可以......
  • 第一个JavaWeb项目
    第一个JavaWeb项目1、Maven的搭建1.1、Maven环境的配置与安装下载:[maven的下载地址](https://maven.apache.org/)环境配置:系统变量配置path变量配置1.2、构建......
  • JavaWeb完整案例详细步骤
    JavaWeb完整案例详细步骤废话少说,展示完整案例主要实现功能基本的CURD、分页查询、条件查询、批量删除所使用的技术前端:Vue+Ajax+Elememt-ui后端:Web层(Servlet)+Serv......
  • JavaScript基础知识
    JavaScript基础知识##输出语句*1.window.alert()--写入警告框*2.document.write()---写入HTML输出*3.console.log()---写入浏览器控制台*alert("helloworld!......
  • python | 算法-拓扑排序
    写在前面:我自己用python练习算法与数据结构的典型算法汇总在这里:汇总-算法与数据结构-python版,欢迎翻阅!1️⃣参考链接:https://github.com/algorithmzuo/algorithmbasic......
  • Java 垃圾回收机制
    一、垃圾回收之标记算法 1.引用计数法通过判断对象的引用数量来决定对象是否被回收每个对象实例都有一个引用计数器,被引用则+1,完成引用则-1  优点:执行效率高,程......