算法题每日一练---第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

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

相关文章
|
1月前
|
算法 Java
[Java·算法·简单] LeetCode 27. 移除元素 详细解读
[Java·算法·简单] LeetCode 27. 移除元素 详细解读
23 1
|
3月前
|
设计模式 算法 Java
【数据结构和算法】删掉一个元素以后全为 1 的最长子数组
这是力扣的 1493 题,难度为中等,解题方案有很多种,本文讲解我认为最奇妙的一种。又又又是一道滑动窗口的典型例题,可以帮助我们巩固滑动窗口算法。这道题很活灵活现,需要加深对题意的变相理解。给你一个二进制数组nums,你需要从中删掉一个元素。 请你在删掉元素的结果数组中,返回最长的且只包含 1 的非空子数组的长度。 如果不存在这样的子数组,请返回 0 。
64 1
|
11天前
|
算法
代码随想录算法训练营第五十七天 | LeetCode 739. 每日温度、496. 下一个更大元素 I
代码随想录算法训练营第五十七天 | LeetCode 739. 每日温度、496. 下一个更大元素 I
14 3
|
20天前
|
算法 测试技术 Serverless
【二分查找】【C++算法】378. 有序矩阵中第 K 小的元素
【二分查找】【C++算法】378. 有序矩阵中第 K 小的元素
|
1月前
|
算法
常见算法题——203.移除链表元素
【2月更文挑战第9天】
24 0
|
2月前
|
搜索推荐 算法
在冒泡排序算法中,为什么每次比较相邻的元素时都要进行交换?
【2月更文挑战第8天】【2月更文挑战第21篇】在冒泡排序算法中,为什么每次比较相邻的元素时都要进行交换?
|
2月前
|
算法
|
3月前
|
搜索推荐 算法 测试技术
【排序算法】【二叉树】【滑动窗口】LeetCode220: 存在重复元素 III
【排序算法】【二叉树】【滑动窗口】LeetCode220: 存在重复元素 III
|
3月前
|
存储 算法
算法题解-二叉搜索树中第K小的元素
算法题解-二叉搜索树中第K小的元素
|
3月前
|
算法
算法题解-多数元素2
算法题解-多数元素2