一. 題目描述
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.
二. 題目分析
題目的大意是,給定一個整數數組,判斷數組中是否包含重復的元素。若數組中任意一個數字出現了至少兩次,函數返回true
;否則,返回false
。
這裡提供兩個方法:
先對數組進行排序,然後遍歷數組,若出現兩個相鄰元素的值相同時,表明有重復元素,返回true;反之返回false。 使用map來實現。遍歷數組,每訪問一個元素,看其是否在map中出現,如已出現過,則存在重復元素,返回true
;如沒有,則將元素加入到map中。
三. 示例代碼
// 方法一
class Solution {
public:
bool containsDuplicate(vector& nums) {
int n = nums.size();
if (n < 2) return false;
sort(nums.begin(), nums.end());
for (int i = 1; i < n; ++i)
if (nums[i] == nums[i - 1]) return true;
return false;
}
};
// 方法二
class Solution {
public:
bool containsDuplicate(vector& nums) {
unordered_map numsMap;
for (int i = 0; i < nums.size(); ++i) {
if(numsMap.count(nums[i])){
return true;
}
numsMap.insert(pair(nums[i], i));
}
return false;
}
};
四. 小結
相關的題目有:Contains Duplicate II 和 Contains Duplicate III。