217.Contains Duplicate
给定一个数组,求其中是否存在重复的元素,有重复,返回true;否则,返回fasle。
Input: [1,2,3,1]
Output: true
思路:
一、用哈希字典存储元素,遍历数组中的元素若存在,则返回false;提交OJ,虽然AC了,但有点慢。
bool containDuplicate(vector<int>& nums) { unordered_map<int, int> map; for (int i = 0; i < nums.size(); i++) { if (map.count(nums[i])) return true; map[nums[i]] = 1; } return false; }
二、稍微改进,先排序,对排序后的数组遍历,速度比之前的快一点。
bool containDuplicate(vector<int>& nums) { if (nums.size < 2) return false; sort(nums.begin(),nums.end()); for (int i = 0; i < nums.size() - 1; i++) { if (nums[i] == nums[i + 1]) return true; } return false; }