Contains Duplicate

原创 2015年07月10日 15:09:37

题目:
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)

public class Solution {
    public static boolean containsDuplicate(int[] nums) {
        int length = nums.length;
        Map<Integer, Integer> map = new HashMap<Integer, Integer>();
        for(int i = 0 ; i < length; i++){
            if(map == null){
                map.put(nums[i], 1);
            }else{
                if(!map.containsKey(nums[i])){
                    map.put(nums[i], 1);
                }else{
                    map.put(nums[i], 2);
                }
            }
        }
        if(map.containsValue(2)){
            return true;
        }

        return false;
    }

    public static void main(String[] args) {
        int[] nums = {3,1,3,4,5,6,7,78};
        boolean flag = containsDuplicate(nums);
        System.out.println(flag);
    }
}

每当遇到这一问题,我的第一反应一般都是用map,然后再对map里面的数据进行判读,发现速度不是很快,就百度下别人的算法,发现自己又脑残了,因为题目是要求有数据出现两次就可以判读出这个数组的返回值为true,不需要对数组中剩下的元素进行判断,改进后,代码如下:

public static  boolean containsDuplicate(int[] nums) {
        int length = nums.length;
        Map<Integer, Integer> map = new HashMap<Integer, Integer>();
        for(int i = 0 ; i < length; i++){
            if(map == null){
                map.put(nums[i], 1);
            }else{
                if(!map.containsKey(nums[i])){
                    map.put(nums[i], 1);
                }else{
                    map.put(nums[i], 2);
                    return true;
                }
            }
        }

        return false;
    }

貌似也没有快很多。没有百度到其他更好的方法,但是代码提交后,还是看到有很多用Java很快的,leetcode应该有个能查看每种语言实现最快的几种代码。

【LeetCode-面试算法经典-Java实现】【219-Contains Duplicate II(包含重复元素II)】

【219-Contains Duplicate II(包含重复元素II)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】代码下载【https://github.com/Wang-...
  • DERRANTCM
  • DERRANTCM
  • 2015年08月29日 06:36
  • 3439

219. Contains Duplicate II [easy] (Python)

题目链接https://leetcode.com/problems/contains-duplicate-ii/题目原文 Given an array of integers and an int...
  • coder_orz
  • coder_orz
  • 2016年06月14日 19:59
  • 1771

解决build path contains duplicate entry:'src' for project 'XXX'问题

导入新项目到eclipse时,会出现报错build path contains duplicate entry:'src' for project 'XXX'; 我的问题是之前导入了一个相同的项目,...
  • EricFantastic
  • EricFantastic
  • 2016年01月13日 08:15
  • 4661

Eclipse或MyEclipse 报错 “build path contains duplicate entry..."解决方法

打开项目的Properties > Java Build Path 时, 提示:MyEclipse Build path contains duplicate entry:'XXX/xxx/xx...
  • ljcjeff
  • ljcjeff
  • 2013年12月05日 11:35
  • 5387

217. Contains Duplicate [easy] (Python)

题目链接https://leetcode.com/problems/contains-duplicate/题目原文 Given an array of integers, find if the ...
  • coder_orz
  • coder_orz
  • 2016年05月14日 19:39
  • 1319

[C语言][LeetCode][219]Contains Duplicate II

题目Contains Duplicate II Given an array of integers and an integer k, find out whether there are tw...
  • Timsley
  • Timsley
  • 2015年08月28日 22:45
  • 849

项目总是有红叉叉,打开又没错,Build path contains duplicate entry: '...' for project 'X

打开:项目属性 -> javaBuildPath ->Libraries 提示如下:      Build path contains duplicate entry: 'WebRoot/WEB...
  • tw19811220
  • tw19811220
  • 2013年06月16日 17:24
  • 4424

开发中遇到的各种坑爹错误及修改

一、eclipse android开发配置 (1)、sdk更新失败               出错问题: 下载并解压sdk之后,点击sdk manager.exe 下载更新,出现网址找不到的问题。 ...
  • lsswear
  • lsswear
  • 2013年10月02日 17:23
  • 1094

219. Contains Duplicate II (python)

Given an array of integers and an integer k, find out whether there are two distinct indices i and ...
  • qq_28119401
  • qq_28119401
  • 2016年10月30日 16:11
  • 221

Leetcode 220. Contains Duplicate III

Given an array of integers, find out whether there are two distinct indices i and j in the array suc...
  • xinqrs01
  • xinqrs01
  • 2017年02月10日 14:08
  • 219
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Contains Duplicate
举报原因:
原因补充:

(最多只允许输入30个字)