LeetCode 217. Contains Duplicate

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.

Example 1:

Input: [1,2,3,1]
Output: true

Example 2:

Input: [1,2,3,4]
Output: false

Example 3:

Input: [1,1,1,3,3,4,3,2,4,2]
Output: true

解析:判断数组中是否存在重复元素,如果存在返回true。

法1:先对数组进行排序,然后依次比较当前元素与前一个元素是否相同。

代码如下:

class Solution {
public:
    bool containsDuplicate(vector<int>& nums) {
        int len = nums.size();
        if(len == 0)
            return false;
        sort(nums.begin(), nums.end());
        int temp = nums[0];
        for(int i =1; i < len; i++)
        {
            if(nums[i] == temp)
                return true;
            temp = nums[i];
        }
        return false;
    }
};

代码运行情况:

法2:采用map的形式,对于每个元素判断map中是否已经存在,代码如下:

class Solution {
public:
    bool containsDuplicate(vector<int>& nums) {
        unordered_map<int, bool> nums_map;
        for(auto &num: nums)
        {
            if(nums_map.find(num) != nums_map.end())
                return true;
            else
                nums_map[num] = true;
        }
        return false;
    }
};

Add a Comment

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据