前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >存在重复元素

存在重复元素

作者头像
木瓜煲鸡脚
发布2020-09-23 12:06:38
6590
发布2020-09-23 12:06:38
举报
文章被收录于专栏:Jasper小笔记

给定一个整数数组,判断是否存在重复元素。如果任意一值在数组中出现至少两次,函数返回true 。如果数组中每个元素都不相同,则返回false

示例 1:

代码语言:javascript
复制
输入: [1,2,3,1]
输出: true

示例 2:

代码语言:javascript
复制
输入: [1,2,3,4]
输出: false

示例 3:

代码语言:javascript
复制
输入: [1,1,1,3,3,4,3,2,4,2]
输出: true

题目信息

输入:整数数组

输出:布尔(数组是否有重复元素)

思考

这一题比前几题都要简单,第一想法就用set存值会有成功与否判断来简单解决,不用工具类的话还有暴力比较那就是双指针比较采用嵌套循环,还有一种就是排好序再比较重复就是挨个了使用当前位置比较上一个只需要一次遍历。

代码总结
代码语言:javascript
复制
//方法一
public boolean containsDuplicate(int[] nums) {
    Set set = new HashSet();
    for(int i = 0; i < nums.length; i++){
        if(!set.add(nums[i])){
            return true;
        }
    }
    return false;
}

空间复杂度:使用了set空间占用小于等于n,为O(n)

时间复杂度:就一次遍历为n次,为O(n)

代码语言:javascript
复制
//方法二
public boolean containsDuplicate(int[] nums) {
    Arrays.sort(nums);
    for (int i = 1; i < nums.length; i++) {
        if (nums[i] == nums[i - 1])
            return true;
    }
    return false;
}

空间复杂度:没用额外空间,为O(1)

时间复杂度:有排序约nlogn次、有遍历为n次,为O(nlogn)。主要取决于排序的时间复杂度,平均最好的就是快排nlog2n

代码语言:javascript
复制
//方法三
public boolean containsDuplicate(int[] nums) {
    for (int i = 0; i < nums.length-1; i++) {
        for (int j = i+1; j < nums.length; j++) {
            if (nums[j] == nums[i])
                return true;
        }
    }
    return false;
}

空间复杂度:没用额外空间,为O(1)

时间复杂度:双层遍历,外层遍历为n次,内层遍历次数逐步减少为小于n^2次,为O(n^2)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT那个小笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目信息
  • 思考
  • 代码总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档