Contains Duplicate

本文介绍了一个使用HashSet容器来判断数组中是否存在重复元素的Java程序。通过遍历数组并将元素添加到HashSet中,利用HashSet的特性来快速判断元素的唯一性,从而实现了在O(n)时间内完成查找。

package cn.edu.xidian.sselab;

import java.util.HashSet;
/**
 * title:Contains Duplicate
 * content:
 * Given an array of integers, find if the array contains any duplicates.
 *Your function should return true if any value appears at least twice in the array,
 *and it should return false if every element is distinct.
 */
public class ContainsDuplicate {

    /**
     * @author wzy
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int[] nums = new int[]{12,2,3,4};
        ContainsDuplicate cd = new ContainsDuplicate();
        long t1 = System.currentTimeMillis();
        cd.containsDuplicate(nums);
        long t2 = System.currentTimeMillis();
        System.out.println(t2-t1);
        
    }

    //这道题判断一个数组中是否存在两个相同的值
    //为了使时间复杂度比较低,可以达到O(n)的程度,这里可以将取出来的值放到HashSet,Hashtable,ArrayList等中,
    //因为这些容器内置了contains方法,之用调用他们的接口就可以进行判断是否有相同的存在
    //对数组进行遍历,将里面的数值放到容器中,然后判断是否相同的值,要注意这里是先判断后存放
    public boolean containsDuplicate(int[] nums){    
        int len = nums.length;
        HashSet<Integer> temp = new HashSet<Integer>();
        for(int i=0;i<len;i++){            
            if(temp.contains(nums[i]))
                return true;
            temp.add(nums[i]);
        }
        return false;
    }
}

转载于:https://www.cnblogs.com/wzyxidian/p/4915903.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值