关于编写Meera数组判断函数的技术求助
解决Meera数组判断问题
问题回顾
Meera数组定义:仅包含数字元素的数组,且数组中任意元素n的n*2值都不在数组内。
需求:编写checkMeera函数,接收数字数组参数,满足:
- 若数组中不存在任何一对
n和n*2,控制台输出"I am a Meera array" - 否则输出
"I am NOT a Meera array"
解决方案
实现思路
- 将数组转换为
Set集合,利用Set的O(1)查找效率提升性能 - 遍历数组中的每个元素,检查当前元素的2倍值是否存在于Set中
- 一旦找到符合条件的元素对,立即判定不是Meera数组并输出结果;遍历结束后未找到则判定是Meera数组
代码实现(JavaScript)
function checkMeera(arr) { const numSet = new Set(arr); for (const num of arr) { if (numSet.has(num * 2)) { console.log("I am NOT a Meera array"); return; } } console.log("I am a Meera array"); }
代码解释
new Set(arr):把数组转为Set,既避免重复元素干扰,又能实现快速元素查找- 遍历数组每个元素
num,检查num*2是否在Set中:- 如果存在,直接输出否定结果并终止函数
- 遍历完成后未找到符合条件的元素对,输出肯定结果
测试示例
// 存在5和10,输出否定 checkMeera([10, 4, 0, 5]); // 无符合条件的元素对,输出肯定 checkMeera([7, 4, 9]); // 存在-3和-6,输出否定 checkMeera([1, -6, 4, -3]); // 包含0,0*2=0存在,输出否定 checkMeera([2, 0, 3]);
内容的提问来源于stack exchange,提问作者Petros Ersamo
相关产品推荐
相关产品推荐

