深信服b卷笔试过河问题

题目大概如下

输入一组数字,代表要一些零碎的石头,可以通过踩着这些零碎的石头过河,要求前一步距离d,则下一步距离只能是d或者d+1,d-1,返回是否能够过河
初始条件

  1. 零碎石头N,则2<N<1000
  2. 第一步为0
  3. 其实的距离d为1

举个例子
比如有测例

输入: 0 1 3 4 6 9 10 13
输出: true
路径: 0 1 3 6 9 13

代码

function runToRiver(arr) {
    if (arr.length < 2 || arr[0] != 0 || arr[1] != 1) {
        return false
    }
    var i = 2;
    var step = 1;
    return process2(arr, step, i)
}

function process2(arr, step, index) {
    var i = index
    while (index < arr.length && arr[index] - arr[i - 1] <= step + 1 ) {
        if (arr[index] - arr[i - 1] >= step - 1) {
            var distance = arr[index] - arr[i - 1]
            console.log(distance, arr[index])
            if (process2(arr, distance, index + 1)) {
                return true
            }
        }
        index++
    }
    if (index === arr.length) {
        return true
    }
    return false
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值