相关疑难解决方法(0)

我对Codility MissingInteger的Java解决方案有什么问题?

我正在尝试解决密码问题MissingInteger问题链接:

写一个函数:

class Solution { public int solution(int[] A); }
Run Code Online (Sandbox Code Playgroud)

如果给定N个整数的非空零索引数组A,则返回A中不出现的最小正整数.例如,给定:

 A[0] = 1    
 A[1] = 3    
 A[2] = 6
 A[3] = 4    
 A[4] = 1    
 A[5] = 2
Run Code Online (Sandbox Code Playgroud)

该函数应返回5.

假使,假设:

N是[1..100,000]范围内的整数; 数组A的每个元素都是[-2,147,483,648..2,147,483,647]范围内的整数.

复杂:

预期的最坏情况时间复杂度是O(N); 预期的最坏情况空间复杂度是O(N),超出输入存储(不计入输入参数所需的存储).可以修改输入数组的元素.

我的解决方案是:

class Solution {
    TreeMap<Integer,Object> all = new TreeMap<Integer,Object>();

    public int solution(int[] A) {

        for(int i=0; i<A.length; i++)
            all.put(i+1,new Object());

        for(int i=0; i<A.length; i++)
            if(all.containsKey(A[i]))
                all.remove(A[i]);

        Iterator notOccur = all.keySet().iterator();
        if(notOccur.hasNext())
            return (int)notOccur.next();

        return 1;

    }
}
Run Code Online (Sandbox Code Playgroud)

测试结果如下:

在此输入图像描述

谁能解释我为什么我得到这两个错误的答案?特别是第一个,如果数组中只有一个元素,那么唯一正确的答案不应该是1吗?

java

10
推荐指数
2
解决办法
6万
查看次数

标签 统计

java ×1