当前位置: 首页 > news >正文

【LeetCode】217. 存在重复元素

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 <= nums.length <= 10^5
  • -10^9 <= nums[i] <= 10^9

个人题解

思路:

  1. 哈希逐个判断即可
class Solution {public boolean containsDuplicate(int[] nums) {HashSet<Integer> set = new HashSet<>(nums.length);for (int num : nums) {if (!set.contains(num)) {set.add(num);} else {return true;}}return false;}
}

官方题解

方法一:排序

在对数字从小到大排序之后,数组的重复元素一定出现在相邻位置中。因此,我们可以扫描已排序的数组,每次判断相邻的两个元素是否相等,如果相等则说明存在重复的元素。

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;}
}

复杂度分析

  • 时间复杂度:O(NlogN)
  • 空间复杂度:O(logN)
方法二:哈希表

对于数组中每个元素,我们将它插入到哈希表中。如果插入一个元素时发现该元素已经存在于哈希表中,则说明存在重复的元素。

class Solution {public boolean containsDuplicate(int[] nums) {Set<Integer> set = new HashSet<Integer>();for (int x : nums) {if (!set.add(x)) {return true;}}return false;}
}

复杂度分析

  • 时间复杂度:O(N),N是字符串 s 的长度
  • 空间复杂度:O(N)

作者:力扣官方题解
链接:https://leetcode.cn/problems/contains-duplicate/solutions/518991/cun-zai-zhong-fu-yuan-su-by-leetcode-sol-iedd/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

http://www.lryc.cn/news/224990.html

相关文章:

  • 【Redis缓存架构实战常见问题剖析】
  • mac M2 pytorch_geometric安装
  • 【C++】异常 智能指针
  • 切换数据库的临时表空间为temp1 / 切换数据库的undo表空间为 undotbs01
  • react: scss使用样式
  • JAVA深化篇_36—— Java网络编程中的常用类
  • python操作链接数据库和Mysql中的事务在python的处理
  • 【qemu逃逸】XCTF 华为高校挑战赛决赛-pipeline
  • muduo源码剖析之TcpClient客户端类
  • C语言——switch语句判断星期
  • 栈回溯之CmBacktrace
  • node插件MongoDB(二)——MongoDB的基本命令
  • 【Git】推送Github失败:remote: Permission to xxx/*.git denied to xxx
  • Flink -- 状态与容错
  • Linux C语言进阶-D15递归函数和函数指针
  • LeetCode算法心得——全排列(回溯型排列)
  • 读取W25Q64的设备ID时输出0xff
  • 【Docker】Docker 网络
  • Flutter学习:使用CustomPaint绘制路径
  • 软件模拟SPI协议的理解和使用编写W25Q64
  • SQLI手动注入和python sqlmap代码注入
  • MemcachedRedis构建缓存服务器 (数据持久化,主从同步,哨兵模式)
  • Python语法基础(变量 注释 数据类型 输入与输出 运算符 缩进)
  • linux espeak语音tts;pyttsx3 ubuntu使用
  • 小白该如何学习Linux操作系统?
  • 2023双十一:实体门店闯入,第二战场全面开战
  • 操作系统·处理机调度死锁
  • SQL第四次上机实验
  • 读书笔记:彼得·德鲁克《认识管理》第11章 若干例外及经验教训
  • JVM-虚拟机的故障处理与调优案例分析