leetcode605题种花问题的两种方法

20171003223346_2BnNe.jpeg

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

给定一个花坛(表示为一个数组包含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, 20000]。
n 是非负整数,且不会超过输入数组的大小。

下面是答案 let1 和let2 各是一种方法 一种用了正则简单了很多

var n=3
var array=[1,0,1,0,0,0,1,0,1,0,0,0,0,0,0,1,0,1]

function let1(array,n){
     var code=[]
   for(var i=0;i<array.length;i++){
      if(array[i]===0&array[i-1]===0&array[i+1]===0){
         code.push(array[i])
         i=i+2
      }
   }
   if(array[0]===0&array[1]===0&array[2]===1){ //这两种是判断边界问题
     code.push(0)
   }
   if(array[length-1]===0&array[length-2]===0&array[length-3]===1){//这两种是判断边界问题
     code.push(0)
   }

   if(code.length>=n){return true}else{
     return false
   }
}
console.log(let1(array,n))
function let2(array,n){
  var result=array.join("")
  result=result.match(/0{3}/g)
  if(array[0]===0&array[1]===0&array[2]===1){
     result.push(0)
   }
   if(array[length-1]===0&array[length-2]===0&array[length-3]===1){
     result.push(0)
   }                                                                                  
  if(n<=result.length){return true}else{
    return false
  }
}
console.log(let2(array,3))
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。