Leetcode-数据结构-217. 存在重复元素
问题:
给一个整数数组 nums 。
如果任一值在数组中出现 至少两次 ,返回 true ;
如果数组中每个元素互不相同,返回 false 。
例如:
输入:nums = [1,2,3,1]
输出:true
代码
main函数
public class DS20230106 {public static void main(String[] args) {int[] arrs1 = {9,8,7,6,1,2,3}; //falseint[] arrs2 = {9,8,8,6,1,2,3}; //trueboolean ds1 = containsDuplicate1(arrs1);boolean ds2 = containsDuplicate2(arrs2);System.out.println(ds1);System.out.println(ds2);}
}
方法一:排序
在对数字从小到大"排序"之后,数组的重复元素一定出现在"相邻"位置中。★
因此,我们可以 扫描 已排序的数组,
每次判断 相邻的两个元素是否相等,如果相等,则说明存在重复的元素。
复杂度分析
时间复杂度:O(NlogN),其中 N 为数组的长度。需要对数组进行排序。
空间复杂度:O(logN),其中 N 为数组的长度。注意我们在这里应当考虑递归调用栈的深度。
public static boolean containsDuplicate1(int[] nums) {//将数组的指定范围按升序排序Arrays.sort(nums);int n = nums.length;// 遍历for (int i = 0; i < n - 1; i++) {
// 判断:若相邻的元素相等,则返回trueif (nums[i] == nums[i + 1]) {return true;}}return false;}
补充:
数组方法:Array.sort
将数组的指定范围按升序排序。要排序的范围从索引{@code fromIndex}(包含)扩展到索引{@code toIndex}(排除)。
如果{@code fromIndex == toIndex},要排序的范围为空。
实现说明:
排序算法是由Vladimir Yaroslavskiy, Jon Bentley和Joshua Bloch设计的双枢轴快速排序。该算法在许多数据集上提供O(n log(n))性能,导致其他快速排序降低到二次排序性能,并且通常比传统的(单枢轴)快速排序实现更快。
方法二:哈希表
对于数组中每个元素,我们将它插入到哈希表中。
如果插入一个元素时发现该元素已经存在于哈希表中,则说明存在重复的元素
复杂度分析
时间复杂度:O(N),其中 N 为数组的长度。
空间复杂度:O(N),其中 N 为数组的长度。
public static boolean containsDuplicate2(int[] nums) {Set<Integer> set = new HashSet<Integer>();// 对于数组中每个元素,我们将它插入到哈希表中。for (int x : nums) {
// 如果插入一个元素时发现该元素已经存在于哈希表中,则说明存在重复的元素。★利用了set的特性if (!set.add(x)) {return true;}}return false;}
补充:
HashSet
构造一个包含指定集合中的元素的新集合。
创建HashMap时使用默认负载因子(0.75)和足以包含指定集合中的元素的初始容量。
如果指定的集合为空,则会抛出NullPointerException异常。
static
作用:用于内存管理
根据作用范围:
变量:称为类变量、静态变量
方法(指被 static 修饰的成员方法):称为类方法、静态方法
属于类,而不属于类的对象。
1)它通过类直接被调用,无需创建类的对象。★
2)静态方法中,不能使用 this 关键字,也不能直接访问所属类的实例变量和实例方法;
3)静态方法中,可以直接访问所属类的静态变量和静态方法。
4)同this 关键字,super 关键字也与类的实例相关,静态方法中不能使用 super 关键字。
代码块:称为静态代码块
作用:用于类初始化时,为类的静态变量赋初始值,提升程序性能。
特点:
1.静态代码块,有点类似于一个方法,但不可以存在于任何方法体内。
2.静态代码块,可以置于类中的任何地方,类中可以有多个静态初始化块。
3.Java 虚拟机在加载类时执行,将只需要进行一次初始化的操作放在 static 代码块。
4.类中含多个静态代码块,Java虚拟机将按它们在类中出现的顺序依次执行,且都执行一次。
5.同静态代码块与静态,不能直接访问类的实例变量和实例方法,需通过类的对象访问(new一个对象)。
public HashSet(Collection<? extends E> c) {map = new HashMap<>(Math.max((int) (c.size()/.75f) + 1, 16));addAll(c);}
运行结果
false
trueProcess finished with exit code 0
Leetcode-数据结构-217. 存在重复元素相关推荐
- LeetCode Algorithm 217. 存在重复元素
217. 存在重复元素 Ideas 对于C++来说,先用std的sort对数组排个序,然后遍历数组,如果第i位和第i+1位相等,说明数组中存在重复元素. 对于Python来说,用set创建一个集合,然 ...
- 217. 存在重复元素
217. 存在重复元素 给定一个整数数组,判断是否存在重复元素. 如果任意一值在数组中出现至少两次,函数返回 true .如果数组中每个元素都不相同,则返回 false . 示例 1: 输入: [1, ...
- LeetCode 217. 存在重复元素(哈希)
文章目录 1. 题目 2. 解题 1. 题目 给定一个整数数组,判断是否存在重复元素. 如果任何值在数组中出现至少两次,函数返回 true.如果数组中每个元素都不相同,则返回 false. 示例 1: ...
- Leetcode 217. 存在重复元素 (每日一题 20210913)
给定一个整数数组,判断是否存在重复元素.如果存在一值在数组中出现至少两次,函数返回 true .如果数组中每个元素都不相同,则返回 false .示例 1:输入: [1,2,3,1] 输出: true ...
- Leetcode题库217.存在重复元素(python实现)
文章目录 思路 代码 思路 1.采用set的性质(无重复元素)解题 2.hash数组 3.字典 4.暴力for循环(小心超时) 代码 class Solution:def containsDuplic ...
- leetcode[217].存在重复元素
给定一个整数数组,判断是否存在重复元素. 如果存在一值在数组中出现至少两次,函数返回 true .如果数组中每个元素都不相同,则返回 false . 示例 1: 输入: [1,2,3,1] 输出: t ...
- LeetCode实战:存在重复元素
背景 为什么你要加入一个技术团队? 如何加入 LSGO 软件技术团队? 我是如何组织"算法刻意练习活动"的? 为什么要求团队的学生们写技术Blog 题目英文 Given an ar ...
- LeetCode Permutations II(有重复元素的全排列)
问题:给出一个有重复元素的数组,要求输出全排列 思路:先排序,然后使用next_permutation 具体代码参考: https://github.com/wuli2496/OJ/tree/mast ...
- 力扣217.存在重复元素 使用多种方法
题目描述 给定一个整数数组,判断是否存在重复元素. 如果存在一值在数组中出现至少两次,函数返回 true .如果数组中每个元素都不相同,则返回 false . 示例 示例 1: 输入: [1,2,3, ...
- 力扣题目——217. 存在重复元素
注:本文的实现思路主要是基于JS(JavaScript),涉及到的一些函数都是JS中的自带函数 题目描述 给定一个整数数组,判断是否存在重复元素. 如果存在一值在数组中出现至少两次,函数返回 true ...
最新文章
- js颜色选择器 制作分析
- Linux内存管理之高端内存映射
- mysql not in语句_Mysql学习经验总结【2】
- CodeForces - 1485F Copy or Prefix Sum(dp)
- 没事写着玩 系列之 JQ连连看(很丑陋,很初级)
- 电脑内部录音教程Virtual Audio Cable使用教程
- ECCV18|这篇论文开源的车牌识别系统打败了目前最先进的商业软件(附Github地址)...
- td外边加div为啥不隐藏_那些不常见,但却非常实用的 css 属性
- 【系统架构】小型电商网站的架构(一)
- 力扣算法题—069x的平方根
- linux谷歌浏览器无法登陆,新版CentOS 7.1上的谷歌浏览器无法启动
- Zookeeper下载与安装教程(for windows)
- 点击换图 秀米的svg_能换色的.svg图片怎么用?看这篇就够了!
- java的handler机制_从源码解析Handler机制
- w7系统里没有iis信息服务器,win7系统控制面板的管理选项没有“internet信息服务(IIS)管理器”的解决方法...
- PHP抓取淘宝店铺等级、评分
- 基于MATLAB的车牌识别基本原理及算法讲解
- 欧奈尔RPS曲线的编制方法及常见问题解答
- 华为 eNSP启动设备AR1失败 错误代码40
- css精华怎么使用,css橄榄精华好用吗?css橄榄精华评测
热门文章
- Dubbo NoSuchMethodException: Not found method “xxx“ in class xxx问题解决
- 《成语接龙》隐私说明
- 怎么去掉视频上的水印?快速去除水印或字幕的大神技巧
- PMP-商业论证中的财务测量指标-动态投资回收期、净现值、内部收益率、效益成本率计算
- PCB中贴片元件封装焊盘尺寸的规范
- 加载、编辑和保存Wod格式所见所得的Word文档处理控件TX Text Control ActiveX
- 大智慧财汇数据库l2接口的核心是什么?
- 集合的简单实现(斗地主牌的实现 )
- MQTT之十一 阿里云物联网平台网址
- 谷歌滤镜软件叫什么_谷歌app爆红的拍照功能:你最像名画中的谁?