Michael Lo

Command Palette

Search for a command to run...

Blog
PreviousNext

Contains Duplicate

--

Detect if array contains duplicate elements using Set or Map

Determine if an array contains any duplicate elements

問題描述

給你一個整數數組 nums。如果任一值在數組中出現 至少兩次,返回 true;如果數組中每個元素都不相同,則返回 false

範例

輸入:nums = [1,2,3,1]
輸出:true

輸入:nums = [1,2,3,4]
輸出:false

輸入:nums = [1,1,1,3,3,4,3,2,4,2]
輸出:true

限制條件

  • 1 <= nums.length <= 10⁵
  • -10⁹ <= nums[i] <= 10⁹

解題思路

### Set 去重特性 利用 Set 不允許重複元素的特性
### 長度比較 比較原數組和 Set 的長度差異
### 早期退出優化 使用 Map 在發現重複時立即返回

解決方案

typescript
export function containsDuplicate(nums: number[]): boolean {
  return new Set(nums).size !== nums.length;
}
 
export function containsDuplicateMap(nums: number[]): boolean {
  const countMap = new Map<number, number>();
 
for (const num of nums) {
const count = (countMap.get(num) || 0) + 1;
if (count > 1)
return true;
countMap.set(num, count);
}
return false;
}
 

相關題目