首页 > 编程语言 >LeetCode 217 存在重复元素(JAVA)

LeetCode 217 存在重复元素(JAVA)

时间:2024-03-19 15:23:13浏览次数:21  
标签:217 set JAVA nums int 元素 数组 true LeetCode

LeetCode 217 存在重复元素(JAVA)

一、题目描述:

给你一个整数数组 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

二、题目分析:

该问题针对的是数组对象。通过遍历数组,保存每个数出现的次数,我的想法是通过set,依据set集合的性质,不能添加重复的元素进行判断,如果无法添加元素,则说明已存在该元素,则返回true。否则直到遍历结束。

三、开始作答:

class Solution {
    public boolean containsDuplicate(int[] nums) {

        Set<Integer> set = new HashSet<>();

        for(int num :nums){
            //如果无法加入set,则说明存在该元素,即次数=2
            if(!set.add(num)){
                return true;
            }
        }
        return false;
    }
}

四、查看题解:

题解主要有两种解法,一种是利用set,即我考虑的方式。

此时的时间复杂度为O(N)

还有一种方式,即先对数组进行排序,然后再两两比较,如果两个元素相等,则返回true.

此时的时间复杂度由于进行了排序,为O(NlogN)

代码如下:

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

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

标签:217,set,JAVA,nums,int,元素,数组,true,LeetCode
From: https://www.cnblogs.com/jshmztl/p/18083022

相关文章

  • LeetCode 242 有效的字母异位词(JAVA)
    LeetCode242有效的字母异位词(JAVA)一、题目描述:给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。注意:若s和t中每个字符出现的次数都相同,则称s和t互为字母异位词。示例1:输入:s="anagram",t="nagaram"输出:true示例2:输入:s=......
  • java核心技术卷1 第六章:接口、lambda表达式与内部类
    接口接口不是类,而是描述了符合这个接口的类应该做什么,描述了一组抽象的需求,而没有指定怎么做接口中的所有方法自动是public,接口中声明方法不需要加public(java规范,减少不必要的冗余声明,即使一些程序员为了清晰习惯加上public)实现接口时,需要加上public,不然默认将权限设为了defa......
  • 算法训练营第10天|栈与队列基础知识总结 LeetCode 232.用栈实现队列 225.用队列实现栈
    栈与队列基础知识总结 首先要明白栈和队列不同的地方在于,栈是先入后出的结构,队列是先入先出的结构。栈的基本操作栈的定义: stack<int>s;入栈元素:intx;s.push(x);出栈元素:s.pop();返回栈顶元素:s.top();判断栈是否为空:s.empty();队列的基本操作:队列和栈的基本......
  • 身份证文字识别ocr免费-身份证实名认证接口-护照识别-Java调用代码
    文字识别技术是针对图片上的文字进行提取,免去人们手动输入的繁琐。针对证件,翔云提供了身份证识别接口、身份证实名认证接口、护照识别接口,身份证识别接口自动提取身份证信息、身份证实名认证接口实时联网查验身份证的真伪。以身份证识别接口Java语言代码为例,欢迎免费体验:pac......
  • JAVA接口代码-从技术到创新、发票ocr、发票查验接口、发票识别
    财政类票据ocr、增值税发票识别、全电票ocr接口是一项重要的技术创新,在数字化、信息化高速发展的商业环境中发挥着至关重要的作用。通过集成翔云API,可快速实现发票信息的自动化识别提取与真伪查验,提升了财务管理效率。就发票识别接口,提供Java语言代码,有需要的人员可在线......
  • 基于Java+Vue的人力资源管理系统设计与实现【附源码+文档】
        前言:eHR人力资源管理系统是一个综合性的、用于优化人力资源管理流程的系统。它涵盖了人力资源管理的多个方面,包括招聘、人事、考勤、绩效、社保公积金以及薪酬管理等。以下是关于这些模块的详细解释:一、招聘管理招聘管理是eHR系统的重要组成部分,它可以帮助企业实现......
  • java GC Collector
    java垃圾收集器#最小堆值,不设置默认为操作系统1/64-Xms4G#最大堆值,不设置默认为操作系统1/4-Xmx4GG1jdk9开始默认启用,显示启用-XX:+UseG1GC介绍服务器级计算机上的垃圾优先(G1)收集器,否则为串行收集器。GC线程的最大数量受堆大小和可用CPU资源的限制初始堆......
  • Centos安装配置Java8
    查看Centos发行版本[root@lavm-ik3g4r3pga~]#cat/etc/redhat-releaseCentOSLinuxrelease7.9.2009(Core)查看java8安装包[root@lavm-ik3g4r3pga~]#yumlistjava-1.8*Loadedplugins:fastestmirrorRepositorybaseislistedmorethanonceintheconfiguration......
  • Java中使用easyexcel导入导出数据
    工作中常常遇到导入导出Excel数据,还需要设置表格边框、合并单元格、字体居中等等各种样式,尝试了多种方式觉得阿里的easyexcel挺好使,记录一下使用、表格样式如下:导入依赖<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId>......
  • Java基础知识总结(下)
    本文部分内容节选自JavaGuide,地址:https://javaguide.cn/java/basis/java-basic-questions-03.html......