【贪玩巴斯】每日一练——《力扣:LeetCode 算法入门》(C++)——「存在重复元素」
题目四:
作者:力扣 (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++)——「存在重复元素」相关推荐
- python【力扣LeetCode算法题库】169-多数元素
多数元素 给定一个大小为 n 的数组,找到其中的多数元素.多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素. 你可以假设数组是非空的,并且给定的数组总是存在多数元素. 示例 1: 输入: [3 ...
- python【力扣LeetCode算法题库】27-移除元素
移除元素 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度. 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输 ...
- python【力扣LeetCode算法题库】169 多数元素
多数元素 给定一个大小为 n 的数组,找到其中的多数元素.多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素. 你可以假设数组是非空的,并且给定的数组总是存在多数元素. 示例 1: 输入: [3 ...
- python【力扣LeetCode算法题库】3- 无重复字符的最长子串
无重复字符的最长子串 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 & ...
- python【力扣LeetCode算法题库】220-存在重复元素 III
给定一个整数数组,判断数组中是否有两个不同的索引 i 和 j,使得 nums [i] 和 nums [j] 的差的绝对值最大为 t,并且 i 和 j 之间的差的绝对值最大为 ķ. 示例 1: 输入: ...
- python【力扣LeetCode算法题库】219 -存在重复元素 II
给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的绝对值最大为 k. 示例 1: 输入: nums = ...
- python【力扣LeetCode算法题库】217-存在重复元素
给定一个整数数组,判断是否存在重复元素. 如果任何值在数组中出现至少两次,函数返回 true.如果数组中每个元素都不相同,则返回 false. 示例 1: 输入: [1,2,3,1] 输出: true ...
- python【力扣LeetCode算法题库】257- 二叉树的所有路径
给定一个二叉树,返回所有从根节点到叶子节点的路径. 说明: 叶子节点是指没有子节点的节点. 示例: 输入: 1 / 2 3 5 输出: ["1->2->5", &quo ...
- python【力扣LeetCode算法题库】10-正则表达式匹配
给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配. '.' 匹配任意单个字符 '*' 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖 整个 字符串 ...
- 力扣LeetCode算法题第2题-两数之和(二)
力扣算法题第二题,两数相加算法题: 要求: //给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. //如果,我们将 ...
最新文章
- SVM支持向量机——核函数、软间隔
- mysql实现俩个属性加减运算_SQL实现相邻两行数据的加减乘除操作
- 通过机器学习识别“迪士尼在逃公主”,程序员宠女的正确打开方式!
- 2013/12/25
- Mac如何搭建 配置 虚拟机环境 virtualenv python虚拟环境
- 如何用Python解析JSON数据
- linux驱动-设备驱动模型
- Datastage数据装载报错:Consumed more than 1000000 bytes looking for record delimiter
- Python TensorFlow框架 实现手写数字识别系统
- 英文面试:自我介绍篇nbsp;(转)
- 华为AC旁路二层组网隧道转发示例
- 必备技能06:UML类图要素及解析
- 是怎么样的SQL优化能做到 900W+数据,从17s到300ms?
- android 友盟统计功能,在Android工程中集成友盟统计
- 医学统计学 第五章(定性资料的统计描述)
- mysql空间数据类型的使用_MySQL空间数据类型
- 服务器ssd硬盘接笔记本,让你的老本满血复活,笔记本固态硬盘升级指南
- 【教程】LATTICE DIAMOND 工程新建介绍
- HDR多帧曝光融合Python代码实现
- Java 成绩分析绘图_学生考试成绩分析的设计与实现