LeetCode Contains Duplicate

题目:

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.

题意:

LZ这题一开始题意没有很好理解,导致费了很多时间在这上面,应该先好好理解题意,然后再慢慢构思解题。给定一个Integer的字符数组,然后如果任意一个字符出现了至少两次,那么就返回真(true),否则当且仅当数组中的每一个数字都只出现一次那么才返回false。另外需要注意的是两个地方:当出现空的时候[ ],那么这时候也应该返回false;还有就是出现只有一个元素的时候,即[0],那么因为元素的个数也仅为1,所以也返回false。

那么此题一开始我用数组去模拟,将每一个元素都压入数组中,发现这样写会超时,因此,我就考虑用另一种方式来写,那就是采用Set来模拟,因为Set具有这样的性质,它不允许其中的元素出现重复,那么这样我可以考虑将数组中的元素先放入Set中,如果某一个元素出现多个,那么就将用Set.contains(Object)来判断这个元素是否是在,如果判断在,那么立即终止,采用break来终止。

代码:

public class Solution 
{
    public static  boolean containsDuplicate(int[] nums)
    {
        int length = nums.length;
        boolean test = false;
        if(length == 0 || length == 1)
            test = false;
        else 
        {
            Set uniqueSet = new HashSet();
            uniqueSet.add(nums[0]);
            for (int i = 1; i < length; i++) 
            {
                if (uniqueSet.contains(nums[i])) 
                {
                    test = true;
                    break;
                } 
                else 
                {
                    uniqueSet.add(nums[i]);
                }
            }
        }
        return test;
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值