You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

环形数组相邻元素差值判定入门级实现代码求助

环形数组相邻元素差值判定实现

需求说明

给定一个环形数组,计算每对相邻元素的差值(包括最后一个元素与第一个元素),若差值的绝对值大于给定阈值m,则输出1,否则输出0。

输入输出规则

输入说明

  • 第一行输入两个整数n(数组长度)和m(差值阈值)
  • 第二行输入n个空格分隔的整数作为数组元素

输出说明

按顺序输出每对相邻元素的判定结果,用空格分隔

示例

示例输入

5 15
50 65 85 98 35

示例输出

0 1 0 1 0

适合初学者的易懂实现代码

原参考代码的逻辑可以简化,用Math.abs()直接计算差值的绝对值,更直观易读:

// 处理输入:userInput为包含两行输入的数组,例如["5 15", "50 65 85 98 35"]
function judgeCircularArray(userInput) {
    // 解析第一行的数组长度n和阈值m
    const [n, m] = userInput[0].split(" ").map(Number);
    // 解析第二行的数组元素
    const arr = userInput[1].split(" ").map(Number);
    // 存储判定结果的数组
    const result = [];

    // 处理前n-1组相邻元素(第1到第n-1个元素,分别与下一个元素配对)
    for (let i = 0; i < n - 1; i++) {
        // 计算当前元素与下一个元素差值的绝对值
        const diffAbs = Math.abs(arr[i] - arr[i + 1]);
        // 根据阈值判断,将结果存入数组
        result.push(diffAbs > m ? 1 : 0);
    }

    // 处理最后一组:数组最后一个元素与第一个元素的配对
    const lastDiffAbs = Math.abs(arr[n - 1] - arr[0]);
    result.push(lastDiffAbs > m ? 1 : 0);

    // 将结果数组转为空格分隔的字符串返回
    return result.join(" ");
}

// 示例调用
const userInput = ["5 15", "50 65 85 98 35"];
console.log(judgeCircularArray(userInput));

代码说明

  • 用解构赋值直接获取n和m,比原代码的索引取值更清晰
  • 使用Math.abs()计算绝对值,避免原代码中复杂的正负分支判断,降低理解难度
  • 用三元运算符简化条件判断逻辑,代码更简洁直观
  • 分步骤处理常规相邻元素与首尾元素配对,逻辑分层明确,初学者容易跟进

内容的提问来源于stack exchange,提问作者slystersanto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 16:01:02