Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java程序通过求反查找重复值解决方案错误java.lang.ArrayIndexOutOfBoundsException:-3_Java - Fatal编程技术网

java程序通过求反查找重复值解决方案错误java.lang.ArrayIndexOutOfBoundsException:-3

java程序通过求反查找重复值解决方案错误java.lang.ArrayIndexOutOfBoundsException:-3,java,Java,请提供有关此代码错误的帮助 线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:-3 在FindDuplicate.firstDuplicate(File.java:9) 位于FindDuplicate.main(File.java:19) 类查找重复{ 公共静态int firstDuplicate(int[]a){ int n=a.长度; 对于(int i=0;i

请提供有关此代码错误的帮助 线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:-3 在FindDuplicate.firstDuplicate(File.java:9) 位于FindDuplicate.main(File.java:19)

类查找重复{
公共静态int firstDuplicate(int[]a){
int n=a.长度;
对于(int i=0;i
试着解决这个问题

注意:写一个时间复杂度为O(n)且空间复杂度为O(1)的解决方案,因为这是在真实面试中要求你做的事情


给定仅包含1到a.length范围内的数字的数组a,查找第二个匹配项具有最小索引的第一个重复数字。换句话说,如果有多个重复的数字,则返回第二个数字的索引小于第二个数字的索引的数字。如果没有这样的元素,则返回-1。

或者取数组元素0到4

或者更改循环的内部逻辑:在数组索引中减少1
例如,
a[a[I]-1]=…
像这样

Hi@SanDeep Rawat,我是begin code,请为我添加详细的解决方案作为代码您在这个程序中实际要做什么?我试图解决这个问题注:编写一个时间复杂度为O(n)且空间复杂度为O(1)的解决方案,因为在真正的面试中,你会被要求这样做。给定仅包含1到a.length范围内的数字的数组a,查找第二个匹配项具有最小索引的第一个重复数字。换句话说,如果有多个重复的数字,则返回第二个数字的索引小于第二个数字的索引的数字。如果没有这样的元素,则返回-1。检查它,只需更正If-else部分。如果(a[Math.abs(a[i])-1]<0{return Math.abs(a[i])else{a[Math.abs(a[i])-1]=-a[Math.abs(a[i])-1];}
    class FindDuplicate {
    public static int firstDuplicate(int[] a) {
        int n = a.length;
        for (int i = 0; i < n; i++) {
            if (a[Math.abs(a[i])] < 0)
                return Math.abs(a[i]);
            else
                a[a[i]] = -a[a[i]];
        }
        return -1;
    }

    /* Driver program to test the above function */
    public static void main(String[] args) {
        int[] arr = {
            2,
            4,
            3,
            5,
            1
        };
        System.out.println(firstDuplicate(arr));
    }
}