首页 > 编程语言 >力扣217(java&python)-存在重复元素(简单)

力扣217(java&python)-存在重复元素(简单)

时间:2022-09-25 10:24:08浏览次数:50  
标签:217 元素 java HashSet int nums 力扣 集合 true

题目:

给你一个整数数组 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 <= 105
-109 <= nums[i] <= 109

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/contains-duplicate
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路:

一、sort排序

先将数组中的所有数进行排序,这样相等的数字就会相邻,直接判断相邻的数字是否相等,相等返回true,不等返回false。

java代码:

 1 class Solution {
 2     public boolean containsDuplicate(int[] nums) {
 3         Arrays.sort(nums);
 4         int n = nums.length;
 5         for(int i = 1; i < n; i++){
 6             if(nums[i] == nums[i-1]){
 7                 return true;
 8             }
 9         }
10         return false;
11     }
12 }

 python3代码:

1 class Solution:
2     def containsDuplicate(self, nums: List[int]) -> bool:
3         nums.sort()
4         for i in range(len(nums)-1):
5             if nums[i] == nums[i+1]:
6                 return True
7         return False

 

 二、HashSet

将数组中的元素插入到哈希表中,如果插入一个元素时,发现该元素已经存在于哈希表中,说明该元素重复,返回true。遍历结束,都没遇到重复元素,则返回false。

java代码:

 1 class Solution {
 2     public boolean containsDuplicate(int[] nums) {
 3         HashSet<Integer> hashset = new HashSet<>();
 4         for(int num : nums){
 5             if(hashset.contains(num)){
 6                 return true;
 7             }
 8             hashset.add(num);
 9         }
10         return false;
11     }
12 }

 

python3代码:

1 class Solution:
2     def containsDuplicate(self, nums: List[int]) -> bool:
3       # 相等说明无重复元素,返回false(题中说了有重复返回true)
4       return not len(set(nums)) == len(nums)

小知识:

一、java中HashSet的使用
1 . HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合。

2 . HashSet 允许有 null 值。

3 . HashSet 是无序的,即不会记录插入的顺序。

4 . HashSet 不是线程安全的, 如果多个线程尝试同时修改 HashSet,则最终结果是不确定的。 您必须在多线程访问时显式同步对 HashSet 的并发访问。

5 . HashSet 实现了 Set 接口。

6 . HashSet 的初始化定义:

HashSet<String> sites = new HashSet<String>();

引用类型可以有:

 

 7. 常用的方法:

  • contains() 方法:来判断元素是否存在于集合当中;
  • add() 方法:向集合中添加元素;
  • remove() 方法:删除集合中的元素;
  • clear方法:删除集合中所有元素;
  • size()方法:计算HashSet中的元素数量;
  • 使用for-each来迭代HashSet中的元素

 二、python中集合的使用

1.set集合是python的一个基本数据类型,set中的元素是不重复的,无序的,里面的元素必须是可哈希的,不可变的(int,str,tuple,bool),相当于set就是dict类型的数据但是不保存value,只保存key。

创建集合:可以用{}或set()创建集合,但是创建空集合必须用set(),因为{}创建的是空字典。

2.常用方法:

  • 增加数据:集合名.add(数据)     # 因为集合自动去重复,如果添加是重复内容不会进行任何操作
  • 追加数据序列:集合名.update(数据序列)   #数据序列可以是元组、列表、字符串

  • 删除:

    集合名.remove(数据) #如果数据不存在,报错

    集合名.discard(数据) # 数据不存在,不报错

     集合名.pop()    # 随机删除集合中某个数据,并返回这个数据

  • 查找数据:(注意:set没有位置,不能利用索引来查找)

    in : 判断数据是否在集合序列中     print( 数据 in 集合名 ) # 返回 True 或 False

    not in: 判断集合不在集合序列中    print( 数据 not in 集合名 ) # 返回 True 或 False

     

标签:217,元素,java,HashSet,int,nums,力扣,集合,true
From: https://www.cnblogs.com/liu-myu/p/16727316.html

相关文章

  • Java开发环境搭建
    Java开发环境搭建·Java三大版本JavaSE:标准版(桌面程序,控制台开发......)JavaME:嵌入式开发(手机,小家电......)JavaEE:企业级开发(web端,服务器开发...)·JDK,JRE,JVM......
  • java SE 狂神笔记
    1.包机制:区别于类名的命名空间,一般利用公司域名倒置作为包名(www.baidu.com——>com.baidu.www)2.super注意点:a.super调用父类的构造方法,必须在构造方法的第一个;......
  • java读取文本文件的方法
     转自:http://www.java265.com/JavaJingYan/202110/16350339921562.html文本文件是我们日常开发中,常用的简单存储载体,那么如何读取文本文件呢?下文笔者将通过示例的方式......
  • 力扣算法之数组中出现次数超过一半的数字
    数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例:输入:[1,2,3,2,2,2,5,4,2]输......
  • Java基础第一天
    一、Java基础语法由美国sun公司在1995年推出的Java语言Java之父:詹姆斯·高斯林Java发展史:2004年Java5.0(Java里程碑),2009年被Oracle甲骨文公司收购,2014年Java8版本三个......
  • 在Java中public,private,protected的区别
    1>  public表示紧跟其后的成员可以被任何人引用2>  private:表示紧跟其后的成员除了创建这和类型内部的方法,任何人都不可以引用,否则程序编译报错.    私有......
  • html中select option原生JavaScript按照value值 或 按照文本 选择指定选项
    每次搜索大家都在说JQ。。但是我只会用原生js  因为强迫症 不想因为一个小功能引入一个大的js文件以下是原生JavaScript按照value值或按照文本选择指定的optio......
  • Java学习-第一部分-第三阶段-项目实战:满汉楼项目
    满汉楼项目笔记目录:(https://www.cnblogs.com/wenjie2000/p/16378441.html)注意:笔记内容仅为实现该项目的基本后端功能,并不会实现可视化界面,效果都在控制台展示。要完成......
  • Java基础语法 基本数据类型
    整数类型浮点类型字符类型布尔类型字符串类型packageBasicGrammar;/**一、变量按照数据类型来分:基本数据类型:整型:byte\short\int\long......
  • Java基础语法 自动类型提升和强制类型转换
    基本数据类型转换强制类型转换packageBasicGrammar;/*基本数据类型之间的运算规则:前提:这里讨论只是7种基本数据类型变量间的运算。不包含boolean类型的。1.自......