博文中会简要介绍Leetcode P0217题目分析及解题思路。
“Contains Duplicate”是一道比较简单的题目,考察的就是哈希表的运用。这里使用HashSet
来维护一个去重的集合,通过遍历数组,将每个数加入这个集合,在加入之前若发现集合中已存在该数,则说明数组中有重复的元素,否则将其加入。
Given an array of integers, find if the array contains any duplicates.
Your function should return true if any value appears at least twice in the array, and it should return false if every element is distinct.
以下是Java的题解代码实现。
class Solution {
public boolean containsDuplicate(int[] nums) {
Set<Integer> numSet = new HashSet<>();
for (int num: nums) {
if (numSet.contains(num))
return true;
numSet.add(num);
}
return false;
}
}
以下是C++的题解代码实现。
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
unordered_set<int> num_set;
for (int num: nums) {
if (num_set.count(num) > 0)
return true;
num_set.insert(num);
}
return false;
}
};