环形数组相邻元素差值判定入门级实现代码求助
环形数组相邻元素差值判定实现
需求说明
给定一个环形数组,计算每对相邻元素的差值(包括最后一个元素与第一个元素),若差值的绝对值大于给定阈值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
相关产品推荐
相关产品推荐

