题目四:

作者:力扣 (LeetCode)
链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/x248f5/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

题目:存在重复元素

给定一个整数数组,判断是否存在重复元素。
如果存在一值在数组中出现至少两次,函数返回 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

相关标签
数组
哈希表
排序

C++源程序:

// #include<unorderd_set> 声明头文件
class Solution {public:bool containsDuplicate(vector<int>& nums) {// 构建哈希表unordered_set<int> un;for (int x: nums){// 如果find()找到哈希表中有相等元素,那么返回一个迭代器。那么if语句条件成立,执行return语句。 即true 说明有重复元素if(un.find(x) != un.end()){return true; // 有相同元素}un.insert(x);}return false; // 无重复元素}
};
// 构建了哈希表来和原数组对比,核心思想就是在于两个数组的对比,这在数组类的算法题中很常见。

个人心得:

首先,这道题读起来很简单,意思就是数组内不能有重复的数值,那么我们就可以考虑一个——哈希表来存储遍历的数组,再使用哈希中的find函数来进行判断!
构建了哈希表来和原数组对比,核心思想就是在于两个数组的对比,这在数组类的算法题中很常见。

涉及知识:

1. unordered_set
使用前要先#include<unordered_set>
声明变量:unordered_set myset
开始:myset.begin()
结束:myset.end()
插入:myset.insert()
查询位置:myset.find()
删除:myset.erase()
对特定元素进行基数:myset.count(),如果存在就返回1,否则返回0
2.unordered_set中的find()函数详解
find()是会返回一个迭代器,这个迭代器指向和传入参数哈希值一样匹配的元素,如果没有匹配元素,那么会返回这个容器的结束迭代器——myset.end()。
所以在这道题中,我们使用了un.find(x) != un.end() 来进行判断。
3. int x: nums
for (auto x : nums)的作用:相当于:
for (vector< int >::iterator iter = nums.begin(); iter != nums.end(); iter++)

for(auto a:b)中b为一个容器,效果是利用a遍历并获得b容器中的每一个值,但是a无法影响到b容器中的元素。
for(auto &a:b)中加了引用符号,可以对容器中的内容进行赋值,即可通过对a赋值来做到容器b的内容填充。

【贪玩巴斯】每日一练——《力扣:LeetCode 算法入门》(C++)——「存在重复元素」相关推荐

  1. python【力扣LeetCode算法题库】169-多数元素

    多数元素 给定一个大小为 n 的数组,找到其中的多数元素.多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素. 你可以假设数组是非空的,并且给定的数组总是存在多数元素. 示例 1: 输入: [3 ...

  2. python【力扣LeetCode算法题库】27-移除元素

    移除元素 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度. 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输 ...

  3. python【力扣LeetCode算法题库】169 多数元素

    多数元素 给定一个大小为 n 的数组,找到其中的多数元素.多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素. 你可以假设数组是非空的,并且给定的数组总是存在多数元素. 示例 1: 输入: [3 ...

  4. python【力扣LeetCode算法题库】3- 无重复字符的最长子串

    无重复字符的最长子串 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 & ...

  5. python【力扣LeetCode算法题库】220-存在重复元素 III

    给定一个整数数组,判断数组中是否有两个不同的索引 i 和 j,使得 nums [i] 和 nums [j] 的差的绝对值最大为 t,并且 i 和 j 之间的差的绝对值最大为 ķ. 示例 1: 输入: ...

  6. python【力扣LeetCode算法题库】219 -存在重复元素 II

    给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的绝对值最大为 k. 示例 1: 输入: nums = ...

  7. python【力扣LeetCode算法题库】217-存在重复元素

    给定一个整数数组,判断是否存在重复元素. 如果任何值在数组中出现至少两次,函数返回 true.如果数组中每个元素都不相同,则返回 false. 示例 1: 输入: [1,2,3,1] 输出: true ...

  8. python【力扣LeetCode算法题库】257- 二叉树的所有路径

    给定一个二叉树,返回所有从根节点到叶子节点的路径. 说明: 叶子节点是指没有子节点的节点. 示例: 输入: 1 / 2 3 5 输出: ["1->2->5", &quo ...

  9. python【力扣LeetCode算法题库】10-正则表达式匹配

    给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配. '.' 匹配任意单个字符 '*' 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖 整个 字符串 ...

  10. 力扣LeetCode算法题第2题-两数之和(二)

    力扣算法题第二题,两数相加算法题: 要求: //给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. //如果,我们将 ...

最新文章

  1. SVM支持向量机——核函数、软间隔
  2. mysql实现俩个属性加减运算_SQL实现相邻两行数据的加减乘除操作
  3. 通过机器学习识别“迪士尼在逃公主”,程序员宠女的正确打开方式!
  4. 2013/12/25
  5. Mac如何搭建 配置 虚拟机环境 virtualenv python虚拟环境
  6. 如何用Python解析JSON数据
  7. linux驱动-设备驱动模型
  8. Datastage数据装载报错:Consumed more than 1000000 bytes looking for record delimiter
  9. Python TensorFlow框架 实现手写数字识别系统
  10. 英文面试:自我介绍篇nbsp;(转)
  11. 华为AC旁路二层组网隧道转发示例
  12. 必备技能06:UML类图要素及解析
  13. 是怎么样的SQL优化能做到 900W+数据,从17s到300ms?
  14. android 友盟统计功能,在Android工程中集成友盟统计
  15. 医学统计学 第五章(定性资料的统计描述)
  16. mysql空间数据类型的使用_MySQL空间数据类型
  17. 服务器ssd硬盘接笔记本,让你的老本满血复活,笔记本固态硬盘升级指南
  18. 【教程】LATTICE DIAMOND 工程新建介绍
  19. HDR多帧曝光融合Python代码实现
  20. Java 成绩分析绘图_学生考试成绩分析的设计与实现

热门文章

  1. C语言堆栈应用之逆波兰法表达式求值
  2. UE4编辑器修改界面显示语言
  3. 计算机怎么执行程序代码,代码如何运行?
  4. 2014年南京航空航天大学计算机学院推荐研究生公示,南京航空航天大学2013-2014学年研究生评优评奖公示...
  5. Word 批量添加 图片边框
  6. html背景图片加载慢,javascript – 如何加快我网站的背景图片加载速度?
  7. java jersey 搭建_Jersey搭建Rest web服务
  8. 自学备考CKA攻略-考试信息及准备
  9. 涛涛的若依学习笔记——登录
  10. windows局域网共享文件