求解:findUniqueValidNumbers函数参数N的作用?附实现代码
关于findUniqueValidNumbers函数参数N的疑问
我最近碰到一道编程题,需要实现带两个参数的findUniqueValidNumbers函数,已经写出能正常运行的代码,但始终搞不懂第一个参数N的用途。
我的实现代码
function findUniqueValidNumbers(N, arr) { const uniqueNums = new Set(); const prevIndexes = {}; for (let i = 0; i < arr.length; i++) { const num = arr[i]; if (!prevIndexes.hasOwnProperty(num)) { // 首次出现该数字,加入有效集合 uniqueNums.add(num); prevIndexes[num] = i; } else if (prevIndexes[num] % num === 0) { // 非首次出现,但前一次出现的索引能被数字整除,保留有效状态并更新索引 uniqueNums.add(num); prevIndexes[num] = i; } else { // 前一次索引不能被数字整除,移除出有效集合 uniqueNums.delete(num); } } return uniqueNums.size; }
测试用例
findUniqueValidNumbers(5, [1, 2, 1, 2, 2]) // 输出 1 findUniqueValidNumbers(3, [1, 2, 3]) // 输出 3
原题翻译
定义函数
findUniqueValidNumbers(N, arr):
N是数组arr的长度arr是由正整数组成的数组一个数字
x被称为有效数字,当且仅当数组中任意两个x的出现位置i和j(满足i < j),都符合i % x == 0的条件。请返回数组中有效数字的唯一数量。
关于参数N的说明
你的代码逻辑完全正确,之所以没用到N,是因为题目里的N本质上就是数组arr的长度——题目把数组长度单独作为参数传入,可能是为了明确参数含义,或是编程题的常规设计习惯。你可以完全忽略N的存在,用arr.length代替它的作用,只要保留参数占位符合题目要求即可,不会影响代码的正确性。
内容的提问来源于stack exchange,提问作者Jitender
相关产品推荐
相关产品推荐

