LeetCode:217. 存在重复元素

简介

题目链接:https://leetcode.cn/problems/contains-duplicate/description/

解决方式:数组 + 哈希集合

这是作者学习众多大神的思路进行解题的步骤,很推荐大家解题的时候去看看题解里面大佬们的思路、想法!

哈希集合

推荐看 灵茶山艾府 大佬的题解!

解法一

思路:此处我们借助集合到去重特性,将数组元素放入集合中,集合会去除重复的元素,这样数组中的元素全部存放进集合后,若集合的大小比数组小,则证明存在重复元素,反之就不存在。

推荐看 灵茶山艾府 大佬的题解!

java 复制代码
class Solution {
    public boolean containsDuplicate(int[] nums) {
        // 哈希集合
        HashSet<Integer> set = new HashSet<>();
        // 数组元素存入集合中
        for (int x : nums) {
            set.add(x);
        }
        // 集合大小比数组小,则存在重复元素,反之则不存在
        return set.size() < nums.length;
    }
}

解法二

思路:我们也可以利用集合添加重复元素返回 false 的特性,在添加时判断是否存在重复元素。

java 复制代码
class Solution {
    public boolean containsDuplicate(int[] nums) {
        // 哈希集合
        HashSet<Integer> set = new HashSet<>();
        for (int x : nums) {
        		 // 元素已存在,直接返回
            if (!set.add(x)) {
                return true;
            }
        }
        // 没有重复元素
        return false;
    }
}

哈希表

思路:哈希集合的底层是哈希表,所以我们也可以直接使用哈希表判断是否存在重复元素。

java 复制代码
class Solution {
    public boolean containsDuplicate(int[] nums) {
        // 哈希表
        HashMap<Integer, Boolean> map = new HashMap();
        // 迭代数组
        for(int num : nums){
            // 哈希表中存在,则返回 true
            if(map.containsKey(num)){
                return true;
            }
            // 不存在,存入
            map.put(num, true);
        }
        // 跳出循环,则不存在重复元素
        return false;
    }
}

排序

思路:直接对数组使用内置的排序算法排序,迭代数组检查相邻元素是否相等。若相等,则说明有重复元素,否则没有。

java 复制代码
class Solution {
    public boolean containsDuplicate(int[] nums) {
        // 数组排序
        Arrays.sort(nums);
        // 迭代数组,查询是否存在重复元素
        for(int i = 0; i < nums.length - 1; i++){
            if(nums[i] == nums[i + 1]){
                // 存在重复元素
                return true;
            }
        }
        // 不存在
        return false;
    }
}
相关推荐
xiangyun618 小时前
【408数据结构 08】队列:循环队列判空判满,408年年考,一次讲清
c语言·开发语言·数据结构·c++·算法
xiangyun618 小时前
【408数据结构 06】双链表、循环链表、静态链表
c语言·开发语言·数据结构·c++·算法
OKkankan9 小时前
LangChain 能力详解!:输出解析、RAG、向量数据库与 Retriever 检索器
数据结构·python·langchain·ai应用
蓝速科技10 小时前
便民服务大厅 AI 数字人一体机场景适配与落地指南丨蓝速科技
大数据·网络·数据结构·人工智能·自然语言处理·数据分析·运维开发
xxwxx__10 小时前
C++ AVL 树深度剖析:平衡二叉搜索树原理、源码与面试考点
数据结构·c++
Logic10110 小时前
C语言/数据结构数组题解:数字列表加一(Plus One)——进位处理与数组扩展
c语言·数据结构·模拟·数组·时间复杂度·算法题·进位
Navigator_Z10 小时前
LeetCode //C - 1250. Check If It Is a Good Array
c语言·算法·leetcode
xxwxx__14 小时前
C++ STL set 与 map 全套详解:关联式容器、红黑树底层、代码坑点、刷题实战
数据结构·c++
程曦曦14 小时前
MySQL 生产库误删 98 张表后的时间点恢复实战:从 binlog 解析到资金对账
linux·数据结构·其他·算法·ubuntu·运维开发
郝学胜-神的一滴15 小时前
Effective Python 条款 13:善用星号解包,告别下标切片拆分的坑
服务器·开发语言·数据结构·python·程序人生·pycharm