217. Contains Duplicate
Leetcode 问题: 217. Contains Duplicate
Categories:
题目
Given an integer array
nums
, return true if any value appears at least twice in the array, and return false if every element is distinct.
给予一个整数阵列 nums
,如果阵列中有任何整数重複出现 2 次以上
,则回传 true
,如果都是唯一值,则回传 false
Example
Input: nums = [1,2,3,1]
Output: true
Input: nums = [1,2,3,4]
Output: false
Input: nums = [1,1,1,3,3,4,3,2,4,2]
Output: true
演算法
1. 建立储存唯一值的 Set
将没有出现过的资料都储存在这个 Set
2. 判断资料在 Set 有没有出现过
若资料在 Set 有出现过,则表示这个数字阵列 nums
有重複的整数,不需要再检查,直接回传 true
如果都没有找到重複的资料,再回传 false
答案
JavaScript
function containsDuplicate(numsList) {
// 建立储存唯一值的 Set
var numsSets = new Set();
// 预设没有包含重複的数字
var isContainDuplicateNumber = false;
for (var i = 0; i < numsList.length; i++) {
// 目前的数字
var currentNumber = numsList[i];
if (numsSets.has(currentNumber)) {
// 如果目前的数字已经出现过,表示包含重複的数字,跳开不用再检查了
isContainDuplicateNumber = true;
break;
}
// 将不重複的数字加入 Set
numsSets.add(currentNumber);
}
return isContainDuplicateNumber;
}
TypeScript
function containsDuplicate(numsList: number[]): boolean {
// 建立储存唯一值的 Set
const numsSets = new Set();
// 预设没有包含重複的数字
let isContainDuplicateNumber = false;
for (let i = 0; i < numsList.length; i++) {
// 目前的数字
let currentNumber = numsList[i];
if (numsSets.has(currentNumber)) {
// 如果目前的数字已经出现过,表示包含重複的数字,跳开不用再检查了
isContainDuplicateNumber = true;
break;
}
// 将不重複的数字加入 Set
numsSets.add(currentNumber);
}
return isContainDuplicateNumber;
};