LeetCode217:存在重复元素

给定一个整数数组,判断是否存在重复元素。

如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。

示例 1:

输入: [1,2,3,1] 输出: true

示例 2:

输入: [1,2,3,4] 输出: false

示例 3:

输入: [1,1,1,3,3,4,3,2,4,2] 输出: true

解析:

        这里利用set去重的功能,把所有元素存储在set里,如果set的大小小于vector,则说明有重复元素,否则,无重复元素。

代码:

bool containsDuplicate(vector<int>& nums) 
{
	set<int>dup;
	for (int i = 0; i < nums.size(); i++)
	{
		dup.insert(dup.begin(), nums[i]);
	}
	if (dup.size() < nums.size())
		return true;
	return false;
}

另一种解法,是参照leetcode上的答案,利用unique函数的功能,unique的作用是“去掉”容器中相邻元素的重复元素(不一定要求数组有序),它会把重复的元素添加到容器末尾(所以数组大小并没有改变),而返回值是去重之后的尾地址。利用这个特性,先对数组进行排序,然后unique相邻去重,查看尾部迭代器的位置。

代码:

    bool containsDuplicate(vector<int>& nums) {
        sort(nums.begin(),nums.end());
        if(unique(nums.begin(),nums.end())==nums.end())
            return false;
        else
            return true;
    }

猜你喜欢

转载自blog.csdn.net/qq_36214481/article/details/84961039