跳到主要内容

duplicate-integer

问题描述

给定一个包含 n + 1 个整数的数组,其中每个整数都在 1 到 n 之间(包括 1 和 n) 存在重复整数则输出 true 否则 false

测试用例

console.log(hasDuplicateArray([1, 2, 3, 4, 4, 5])); // 输出: true
console.log(hasDuplicateArray([1, 2, 3, 4, 5])); // 输出: false
console.log(hasDuplicateSet([3, 1, 2, 5, 4, 2])); // 输出: true
console.log(hasDuplicateSet([1, 2, 3, 4, 5])); // 输出: false

解决方案

// 使用数组方法
function hasDuplicateArray(nums: number[]): boolean {
const n = nums.length - 1;
const seen = new Array(n + 1).fill(false);

for (const num of nums) {
if (seen[num]) {
return true;
}
seen[num] = true;
}

return false;

}

// 使用哈希表(Set)方法
function hasDuplicateSet(nums: number[]): boolean {
const seen = new Set<number>();

for (const num of nums) {
if (seen.has(num)) {
return true;
}
seen.add(num);
}

return false;

}

// 测试
console.log(hasDuplicateArray([1, 2, 3, 4, 4, 5])); // 输出: true
console.log(hasDuplicateArray([1, 2, 3, 4, 5])); // 输出: false
console.log(hasDuplicateSet([3, 1, 2, 5, 4, 2])); // 输出: true
console.log(hasDuplicateSet([1, 2, 3, 4, 5])); // 输出: false</code>