初级算法-04存在重复元素

93 阅读1分钟

一、题目

给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。

01.自己思考 排序

将整数数组排序之后,通过判断相邻两个元素是相等来进行判断是否存在相同元素

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

可以运行通过,但是。。。。。好吧,但我还是很开心,第一个思考出来并且通过运行的题目,我会永远记住你的!!!!哈哈哈哈哈哈哈

image.png

02.哈希表 (重学哈希表)

题解: 将数组中的元素插入到哈希表之中,如果插入元素值中发现已经存在该元素,则说明存在重复元素。

class Solution {
    public boolean containsDuplicate(int[] nums) {
        Set<Integer> set = new HashSet<Integer>();
        for (int x : nums) {
            if (!set.add(x)) {
                return true;
            }
        }
        return false;
    }
}

二、哈希表使用知识

哈希表四=以键值key,存储数据结构value的值,只要输入待查找的key,即可获取其对应的value值。 哈希表增删改查时间复杂度都是O(1)。

哈希冲突/哈希碰撞

不同的关键字可能通过相同的哈希函数,从而找到相同的位置。

哈希表主要方法

void clear();//重新设置并清空哈希表
boolean contains(Object value);//确定哈希表内是否给了既定的对象,若有则返回true反之返回false。
boolean isEmpty();//确认哈希表是否为空,空则true反之false。
Object get(Object key);//获取对应关键字的对象,若不存在返回null。
void rehash();//再哈希,扩充哈希表使之可以保存更多的元素,当哈希表达到饱和时,系统自动调用此方法。
Object remove(Object key);//从哈希表中删除与给定关键字相对应的对象,若该对象不存在返回null。
int size();//返回哈希表的大小
String toString();//将哈希表内容转化为字符串。