表中的JavaScript检查上升趋势

时间:2020-07-15 20:51:44

标签: javascript arrays

给出一个整数序列作为数组,确定是否可以通过从数组中删除不超过一个元素来获得严格递增的序列。 我创建这段代码

function almostIncreasingSequence(sequence) {

    let index;
    let licznik = 0;

    for (index = 1; index < sequence.length; index++) {
        
        
          if (sequence[index - 1] >= sequence[index]) {
            sequence.splice(index - 1, 1);
            licznik++;
            index = 0;
        } else if (sequence[index] > sequence[index + 1]) {
           sequence.splice(index + 1, 1);
            licznik++;
            index = 0;
        }
    }

    if (licznik > 1) {
        return false;
    } else {
        return true;
    }

}

但是它不能与表[1、2、3、4、99、5、6]一起使用。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您已经接近解决方案,您必须使用splice方法遍历数组,执行三个步骤:

  1. 通过splice在每一步中删除一个元素。
  2. 检查获得的新数组是否已排序,是否返回 值true
  3. 将移除的元素插入相同位置,然后重新创建 原始数组。

第二步比较两个数组元素,并在找到几个sequence[i] > sequence[i + 1]这样的元素后停止;

function almostIncreasingSequence(sequence) {

    for (let index = 0; index < sequence.length; ++index) {
        const removed = sequence.splice(index, 1);
        let sorted = true;

        for (let j = 0; j < sequence.length - 1; ++j) {

            if (sequence[j] > sequence[j + 1]) {
                sorted = false;
                break;
            }

        }

        if (sorted) { return true; }

        sequence.splice(index, 0, removed);

    }

    return false;

}

console.log(almostIncreasingSequence([1, 2, 3, 4, 99, 5, 6]));