结束边界连续两个0和数组只有一个[0]情况

来源:3-6 种花问题-原理讲解

翌子涵

2019-02-14

原代码LeetCode测试用例不予通过

写回答

4回答

翌子涵

提问者

2019-02-14

根据LeetCode测试用例修改的代码

export default (arr, n) => {
  let max = 0
  for (let i = 0, len = arr.length; i < len; i++) {
    if (arr[i] === 0) {
      // 第一位和第二位都为 0 或者只存在一个 0
      if ((i === 0 && arr[1] === 0) || (i === 0 && len === 1)) {
        // 计数累加
        max++
        // 直接跳过下一个索引
        i++
      // 当前索引左侧和右侧都为 0
      } else if (arr[i - 1] === 0 && arr[i + 1] === 0) {
        max++
        i++
      // 最后一位和倒数第二位都为 0
      } else if (i === len - 1 && arr[i - 1] === 0) {
        max++
      }
    }
  }
  return max >= n}


2
1
hey自然
// 最后一位和倒数第二位都为 0 else if (i === len - 1 && flowerbed[i] === 0 && flowerbed[i - 1] === 0) { max++ }
2019-02-25
共1条回复

Charless

2019-06-05

let canPlaceFlowers = (flowerbed, n) => {
    let max = 0;
    for(let i = 0, len = flowerbed.length; i < len; i++){
        if(flowerbed[i] === 0){
            if(i === 0 && (flowerbed[1] === 0 || flowerbed[1] === undefined)){
                max++;
                i++;
            }else if(flowerbed[i-1] === 0 && (flowerbed[i+1] === 0 || flowerbed[i+1] === undefined)){
                max++;
                i++;
            }
        }
    };
    return (max >= n);
};

1
0

nkliyc

2019-06-15

export default (flowerbed, n) => {

//申明花坛最多可种多少

let max = 0

for (let i = 0, len = flowerbed.length; i < len; i++) {

if(flowerbed[i] === 0) {

//满足种植的条件:1、左边界 10; 2、右边界 01; 3、中间 010。

if((flowerbed[i-1] === 0 || flowerbed[i-1] === undefined) && (flowerbed[i+1] === 0 || flowerbed[i+1] === undefined)) {

max++

i++

}

}

}

return max >= n

}


0
0

布罗利00

2019-05-04

var canPlaceFlowers = function(flowerbed, n) {
  for (let i = 0, l = flowerbed.length; i < l; i++) {
    if (!flowerbed[i] && !flowerbed[i - 1] && !flowerbed[i + 1]) {
      flowerbed[i] = 1
      n--
    }
  }
  return n <= 0
};


0
0

JavaScript版 数据结构与算法

填补前端同学的算法短板,掌握面试中最常见的算法与数据结构

2467 学习 · 395 问题

查看课程