( 哈希表) 217. 存在重复元素 ——【Leetcode每日一题】

news/2024/5/19 22:17:22/

❓217. 存在重复元素

难度:简单

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

示例 1:

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

示例 2:

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

示例 3:

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

提示:

  • 1 < = n u m s . l e n g t h < = 1 0 5 1 <= nums.length <= 10^5 1<=nums.length<=105
  • − 1 0 9 < = n u m s [ i ] < = 1 0 9 -10^9 <= nums[i] <= 10^9 109<=nums[i]<=109

💡思路:

方法一:排序
在对数字从小到大排序之后,数组的重复元素一定出现在相邻位置中。

因此,我们可以扫描已排序的数组,每次判断相邻的两个元素是否相等,如果相等则说明存在重复的元素。

方法二:哈希表

对于数组中每个元素,我们将它插入到哈希表中。

  • 如果插入一个元素时发现该元素已经存在于哈希表中,则不会再插入
  • 最后比较哈希表元素个数,如果小于数组元素个数,则一定存在重复元素。

🍁代码:(Java、C++)

方法一:排序
Java

class Solution {public boolean containsDuplicate(int[] nums) {Arrays.sort(nums);int n = nums.length;for (int i = 0; i < n - 1; i++) {if (nums[i] == nums[i + 1]) {return true;}}return false;}
}

C++

class Solution {
public:bool containsDuplicate(vector<int>& nums) {sort(nums.begin(), nums.end());int n = nums.size();for (int i = 0; i < n - 1; i++) {if (nums[i] == nums[i + 1]) {return true;}}return false;}
};

方法二:哈希表
Java

class Solution {public boolean containsDuplicate(int[] nums) {Set<Integer> s = new HashSet<>();for(int num : nums){s.add(num);}return s.size() < nums.length;}
}

C++

class Solution {
public:bool containsDuplicate(vector<int>& nums) {unordered_set<int> s;for(int num : nums){s.insert(num);}return s.size() < nums.size();}
};

🚀 运行结果:

在这里插入图片描述

🕔 复杂度分析:

  • 时间复杂度 O ( n ) O(n) O(n),其中 n 是数组中的元素数量。排序法时间复杂度为 O ( n l o g n ) O(nlogn) O(nlogn)
  • 空间复杂度 O ( n ) O(n) O(n),其中 n 是数组中的元素数量,主要为哈希表的开销。排序法空间复杂度为 O ( l o g n ) O(logn) O(logn),考虑递归调用栈的深度。

题目来源:力扣。

放弃一件事很容易,每天能坚持一件事一定很酷,一起每日一题吧!
关注我 leetCode专栏,每日更新!

注: 如有不足,欢迎指正!


http://www.ppmy.cn/news/55136.html

相关文章

国外导师对博士后申请简历的几点建议

正所谓“工欲善其事&#xff0c;必先利其器”&#xff0c;想要申请国外的博士后职位&#xff0c;就要准备好相应的申请文书材料。如果说Cover Letter是职位的窍门砖&#xff0c;那么申请者的简历就是争取职位的决定性筹码。 相信大家已经看过许多简历的模版了&#xff0c;但是…

趣说数据结构(练习1) —— 顺序表/链表力扣刷题

练习 1 —— 顺序表/链表力扣刷题 1. 合并两个有序链表 力扣题目地址&#xff1a;https://leetcode.cn/problems/merge-two-sorted-lists/ 问题描述&#xff1a;将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例&#x…

echarts在rem布局适配中字体如何适配

echarts在rem布局适配中字体如何适配 rem布局固然重要;但是echarts也需要在随着rem动态改变数值: 直接上代码 接上代码 1 2 3 4 5 6 7 8 9 10 11 // 字体适配 FontChart(res) { //获取到屏幕的宽度 var clientWidth = window.innerWidth || …

Java 中如何定义一个类(三)

Java是一种面向对象的编程语言&#xff0c;类是Java中最基本的概念之一。在Java中&#xff0c;通过定义类可以创建对象&#xff0c;并对这些对象进行操作。本文将介绍如何在Java中定义一个类&#xff0c;并给出相应的示例代码。 定义类 在Java中&#xff0c;定义类使用关键字…

跳跃游戏 (DFS->记忆化搜索->动态规划/贪心证明)

一.跳跃游戏简单介绍 1. 跳跃游戏简单介绍 跳跃游戏是一种典型的算法题目&#xff0c;经常是给定一数组arr&#xff0c;从数组的某一位置i出发&#xff0c;根据一定的跳跃规则&#xff0c;比如从i位置能跳arr[i]步&#xff0c;或者小于arr[i]步&#xff0c;或者固定步数&#…

数组、链表专题

数组、链表专题 前缀和数组LeetCode 303. 区域和检索 - 数组不可变解题思路代码实现 LeetCode 304. 二维区域和检索 - 矩阵不可变解题思路代码实现 LeetCode 560. 和为 K 的子数组解题思路代码实现 差分数组LeetCode 303. 区域和检索 - 数组不可变解题思路代码实现 总结 不要纠…

Java 版Spring cloud 企业工程项目管理系统平台源码(三控:进度组织、质量安全、预算资金成本、二平台:招采、设计管理)

工程项目管理软件&#xff08;工程项目管理系统&#xff09;对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营&#xff0c;全过程、全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#…

【redis】redis分布式锁(二)可重入锁+设计模式

【redis】redis分布式锁&#xff08;二&#xff09;可重入锁 文章目录 【redis】redis分布式锁&#xff08;二&#xff09;可重入锁前言一、可重入锁&#xff08;又名递归锁&#xff09;1、说明&#xff1a;2、分开解释&#xff1a;3、可重入锁的种类隐式锁&#xff08;即synch…

duubo+zookeeper

1、Dubbo简介 1. Dubbo是什么&#xff1f; 高性能、轻量级、开源、基于java Dubbo 是阿里集团开源的远程服务调用的分布式框架&#xff08;告别Web Service模式中的WSDL&#xff0c;以服务者与消费者的方式在dubbo上注册&#xff09; 协议和序列化框架都可以插拔是及其鲜明…

scratch比大小 中国电子学会图形化编程 少儿编程 scratch编程等级考试三级真题和答案解析2023年3月

目录 scratch比大小 一、题目要求 1、准备工作 2、功能实现 二、案例分析

Hive ---- Hive 安装

Hive ---- Hive 安装 1. Hive安装地址2. Hive安装部署1. 安装Hive2. 启动并使用Hive 3. MySQL安装1. 安装MySQL2. 配置MySQL3. 卸载MySQL说明 4. 配置Hive元数据存储到MySQL1. 配置元数据到MySQL2. 验证元数据是否配置成功3. 查看MySQL中的元数据 5. Hive服务部署1. hiveserver…

访问学者出国申请可以分为哪几类?

申请出国访学的人越来越多&#xff0c;访学之所以受欢迎&#xff0c;对申请访学的人员来说&#xff0c;又有哪些收获&#xff1f;访问学者可以分为哪几类呢&#xff1f;按照访美经费来源&#xff0c;访问学者大致可分为三类&#xff0c;即公派访问学者、海外资助类和自费访问学…

经济回暖、兴趣电商升级,品牌在竞争白热化的市场中如何突围?| D3大会圆桌回顾

冬去春来&#xff0c;消费市场韧性回弹&#xff0c;消费趋势正处于“转折”和“跃升”的阶段。新的机遇和挑战也将伴随着新的思维、方法和模式&#xff0c;呈现出更多元的变化和创新&#xff1a;渠道虚实融合&#xff0c;内容为王&#xff0c;社会化媒体成为主战场等消费场景不…

改善电商实时聊天体验的 5 大方法

今天&#xff0c;大多数网站都提供实时聊天支持作为选项。这是因为客户压倒性地将实时聊天列为他们的首选联系方式。 高达86%的消费者愿意在更好的客户体验上花费更多&#xff0c;但只有1%的人的期望始终得到满足&#xff0c;对于能够正确进行实时聊天的品牌来说&#xff0c;这…

霍兰德人格分析雷达图

雷达图 Radar Chart 雷达图是多特性直观展示的重要方式 问题分析 霍兰德认为&#xff1a;人格兴趣与职业之间应有一种内在的对应关系 人格分类&#xff1a;研究型、艺术型、社会型、企业型、传统型、现实性 职业&#xff1a;工程师、实验员、艺术家、推销员、记事员、社会工…

整型数据类型详解

大家好&#xff0c;今天我们来聊聊整型数据类型。什么是整型数据类型呢&#xff1f;顾名思义&#xff0c;就是整数&#xff0c;包括正整数、负整数和零。它是编程语言中最基本的数据类型之一&#xff0c;也是应用最广泛的数据类型之一。 在讲整型数据类型之前&#xff0c;我们…

解决centos8下域名raw.githubusercontent.com解析错误

在win10环境下执行命令 D:\test>ping raw.githubusercontent.com Ping 请求找不到主机 raw.githubusercontent.com。请检查该名称&#xff0c;然后重试。 解决很简单&#xff0c;把ipv6的DNS服务器设为240c::6666就行了&#xff0c;改完后执行命令 D:\test>ping raw.g…

Jsp网上购书系统设计(源代码+论文)

本文研究了一种基于数据关联规则网上书店系统&#xff0c;此方案与现今网上已采用的一些方案相比&#xff0c;具有用户使用更简单、界面更直观等优点。网上书店在我国刚起步&#xff0c;但发展很快。随着我国互联网的更加普及和网上书店的更趋成熟&#xff0c;会有越来越大的消…

软考A计划-挂靠流程和注意事项

点击跳转专栏=>Unity3D特效百例点击跳转专栏=>案例项目实战源码点击跳转专栏=>游戏脚本-辅助自动化点击跳转专栏=>Android控件全解手册点击跳转专栏=>Scratch编程案例👉关于作者 专注于Android/Un

常见的深度学习框架

框架优点缺点TensorFlow- 由Google开发和维护&#xff0c;社区庞大&#xff0c;学习资源丰富- 具备优秀的性能表现&#xff0c;支持大规模分布式计算- 支持多种编程语言接口&#xff0c;易于使用- 提供了可视化工具TensorBoard&#xff0c;可用于调试和可视化模型- 底层架构复杂…