C++存在重复元素(三种解法详解)

您所在的位置:网站首页 获取内容相同的元素列表 C++存在重复元素(三种解法详解)

C++存在重复元素(三种解法详解)

2023-12-16 08:38| 来源: 网络整理| 查看: 265

题目链接:存在重复元素 题目描述

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

如果存在一值在数组中出现至少两次,函数返回 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 解法1(排序) 思路

将所有元素排好序,然后扫描数组,如果一个数与它前一个元素相等,那么就是重复的。

代码 class Solution { public: bool containsDuplicate(vector& nums) { if (nums.size() == 0 || nums.size() == 1) return false; sort(nums.begin(),nums.end()); for(int i = 1;i < nums.size();i++) if(nums[i] == nums[i-1]) return true; return false; } }; //此题使用快速排序会超时,这是因为STL中sort()函数不止用到快速排序,具体原理会在下一篇讲述 class Solution { public: bool containsDuplicate(vector& nums) { if (nums.size() == 0 || nums.size() == 1) return false; quicksort(nums,0,nums.size()-1); for(int i = 1;i < nums.size();i++) if(nums[i] == nums[i-1]) return true; return false; } void quicksort(vector& a,int s,int e) { if(s>=e) return; int k=a[s]; int i=s,j=e; while(i!=j) { while(j>i&&a[j]>=k) --j; swap(a[i],a[j]); while(i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3