算法题每日一练---第77天:存在重复元素

简介: 给你一个整数数组 nums 。

4.png

一、问题描述


给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false


题目链接:存在重复元素

二、题目要求


样例 1

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


样例 2

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


考察

哈希表、排序、判重
建议用时10~25min


三、问题分析


这一题比较简单,主要还是考察判断重复元素的思想。不要一开始就用双重for循环判断,会超时的。

有下面几种代替方法:づ ̄ 3 ̄)づ


1.哈希计数

先循环遍历数组元素,用哈希表存储每一个数字出现的次数,如果存储的时候发现这个数字出现过了,就返回true,否则最后返回false;


2.set存储

set有一个特点,存入的重复元素会自动跳过,不在存储。

所以,有重复元素的数组经过set之后,长度肯定变小。


3.排序判断

排序如何判断重复元素呢?

首先,以样例 1为例,排序后的结果是:

1 1 2 3

第一个数字不需要判断,从第二个数字开始,如果与前一个数字相同,就返回true,否则返回true;


四、编码实现


1.哈希计数

classSolution {
public:
boolcontainsDuplicate(vector<int>&nums) {
inti,n=nums.size();//初始化map<int,int>m;//哈希计数for(i=0;i<n;i++)
        {
m[nums[i]]++;//计数if(m[nums[i]]>=2)//条件判断returntrue;
        }
returnfalse;
    }
};


2.set存储

classSolution {
public:
boolcontainsDuplicate(vector<int>&nums) {
inti,n=nums.size();//初始化set<int>s;//set存储for(i=0;i<n;i++)
s.insert(nums[i]);//插入if(s.size()<n)//发现数组长度变小,存在重复元素returntrue;
elsereturnfalse;
    }
};


3.排序判断

classSolution {
public:
boolcontainsDuplicate(vector<int>&nums) {
inti,n=nums.size();//初始化sort(nums.begin(),nums.end());//排序for(i=1;i<n;i++)
if(nums[i]==nums[i-1])//判重returntrue;
returnfalse;
    }
};

五、测试结果9.png10.png

总体来看,三种方法都差不多,非要比较的话,第三种好一点。

相关文章
|
算法 Java 程序员
【算法每日一练及解题思路】有n级台阶,一次只能上1级或2级,共有多少种走法?
本文深入解析了“爬楼梯问题”,探讨了递归与迭代两种解法,并提供了Java代码实现。通过分析问题本质,帮助读者理解动态规划技巧,提高解决实际编程问题的能力。关键词:Java, 算法, 动态规划, 爬楼梯问题, 递归, 迭代。
948 0
|
存储 算法 索引
算法题解- 存在重复元素
算法题解- 存在重复元素
|
算法 vr&ar 图形学
☆打卡算法☆LeetCode 220. 存在重复元素 III 算法解析
☆打卡算法☆LeetCode 220. 存在重复元素 III 算法解析
|
算法 vr&ar 图形学
☆打卡算法☆LeetCode 217. 存在重复元素 算法解析
☆打卡算法☆LeetCode 217. 存在重复元素 算法解析
|
算法 前端开发
前端算法- 删除排序链表中的重复元素
前端算法- 删除排序链表中的重复元素
|
算法 前端开发
前端算法-存在重复元素
前端算法-存在重复元素
|
算法 索引
LeetCode 算法 | 数组中有重复元素吗(II)?
LeetCode 算法 | 数组中有重复元素吗(II)?
|
存储 算法 前端开发
前端算法-查找是否存在重复元素
前端算法-查找是否存在重复元素
|
算法 Java
存在重复元素(算法java)
存在重复元素(算法java)
262 0

热门文章

最新文章