LeetCode:Contains Duplicate - 判断数组内是否有重复元素

1、题目名称

Contains Duplicate(判断数组内是否有重复元素)

2、题目地址

https://leetcode.com/problems/contains-duplicate/

3、题目内容

英文: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.

中文:给出一个整数数组,判断该数组内是否有两个元素值是相同的,是则返回true,否则返回false

4、解题方法1

先将传入的数组进行排序,排序后查看相邻元素,如果存在相邻元素相同的情况,则说明原数组内有至少两个元素相同。

Java代码如下:

import java.util.Arrays;

/**
 * @功能说明:LeetCode 217 - Contains Duplicate
 * @开发人员:Tsybius2014
 * @开发时间:2015年10月12日
 */
public class Solution {
    
    /**
     * 查看数组内是否有重复元素
     * @param nums
     * @return
     */
    public boolean containsDuplicate(int[] nums) {
        
        if (nums.length <= 1) {
            return false;
        }
        
        Arrays.sort(nums);
        for (int i = 1; i < nums.length; i++) {
            if (nums[i] == nums[i - 1]) {
                return true;
            }
        }
        
        return false;
    }
}

5、解题方法2

遍历数组,将数组内的值逐个放入到一个HashMap中,如果遍历到某元素是发现该元素值已经在HashMap中存在,则说明原数组中存在重复的元素。

Java代码如下:

import java.util.HashMap;

/**
 * @功能说明:LeetCode 217 - Contains Duplicate
 * @开发人员:Tsybius2014
 * @开发时间:2015年10月12日
 */
public class Solution {
    
    /**
     * 查看数组内是否有重复元素
     * @param nums
     * @return
     */
    public boolean containsDuplicate(int[] nums) {
        
        if (nums.length <= 1) {
            return false;
        }

        HashMap<Integer, Integer> hashMap = new HashMap<Integer, Integer>();
        
        for (int i = 0; i < nums.length; i++) {
            if (hashMap.containsKey(nums[i])) {
                return true;
            } else {
                hashMap.put(nums[i], i);
            }
        }
        
        return false;
    }
}

END

转载于:https://my.oschina.net/Tsybius2014/blog/516810

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值