Hard-题目2:287. Find the Duplicate Number

原创 2016年05月31日 23:21:32

题目原文:
Given an array nums containing n + 1 integers where each integer is between 1 and n (inclusive), prove that at least one duplicate number must exist. Assume that there is only one duplicate number, find the duplicate one.
题目大意:
给出一个长度为n+1的数组,其中数组元素都在[1,n]范围,已知输入的数组只有一个数字是重复的,找出那个重复的数字。
题目分析:
使用HashSet可以水过去。
源码:(language:java)

public class Solution {
    public int findDuplicate(int[] nums) {
        HashSet<Integer> set = new HashSet<Integer>();
        for(int num : nums)
            if(!set.add(num))
                return num;
        return -1;
    }
}

成绩:
6ms,beats 23.40%,众数1ms,28.98%
Cmershen的碎碎念:
其实本题的follow up 要求O(n^2)以下时间复杂度,O(1)空间复杂度,且不能移动数组。因此本题的hashset法其实是不合要求的(O(n)空间复杂度),也不能排序。
http://blog.sina.com.cn/s/blog_a131087e0102vtb1.html中提到个很巧妙的two pointers解法,有待下次修正时认真研读。(大致是有重复元素时会迭代成环?)

版权声明:完整版Leetcode题解请出门左转https://github.com/cmershen1/leetcode/tree/master/docs

Find the Duplicate Number leetcode 287

题目大意:找到数组中唯一的一个重复的数值。时间复杂度要小于O(n^2),不能修改数组了。 发现一个很6的算法,把数组当成一个静态链表,也就是说nums[],数组相当于next[],0为起始节点,节点地...
  • tbestcc
  • tbestcc
  • 2015年09月29日 11:54
  • 438

Leetcode 287. Find the Duplicate Number

Leetcode :Find the Duplicate Number(找数组中的重复元素)

Leetcode 287. Find the Duplicate Number O(n)解法和O(nlogn)解法

Find the Duplicate Number题目连接:Find the Duplicate NumberDescript Given an array nums containing n +...

Leetcode (287) Find the Duplicate Number

Given an array nums containing n + 1 integers where each integer is between 1 and n (inclusive), pro...

LeetCode 287. Find the Duplicate Number(找重复数字)

原题网址:https://leetcode.com/problems/find-the-duplicate-number/ Given an array nums containing n + 1...
  • jmspan
  • jmspan
  • 2016年04月15日 07:02
  • 790

【Leecode】287Find the Duplicate Number找到重复的数

找到重复的数给一个数组包含n+1个整数,每个整数都是在1到n之间(包括n),证明至少存在一个重复数字。假设只有一个重复的数字,找出这个数 不能修改这个数组,只能用一个常数的额外空间,运行时间复杂度少于...

287. Find the Duplicate Number找环的起点

Given an array nums containing n + 1 integers where each integer is between 1 and n (inclusive), pro...

LeetCode 287. Find the Duplicate Number 题解(C++)

Given an array nums containing n + 1 integers where each integer is between 1 and n (inclusive), pro...

leetcode 287. Find the Duplicate Number

参考博客:https://segmentfault.com/a/1190000003817671  里面介绍很多方法,而且都给出空间和时间复杂度。  选用最后一种方法,学到新算法。Floy...

【LeetCode】287.Find the Duplicate Number解题报告

【LeetCode】287.Find the Duplicate Number解题报告tags: Array 题目地址:https://leetcode.com/problems/find-the-d...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Hard-题目2:287. Find the Duplicate Number
举报原因:
原因补充:

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