有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java数组使用索引逻辑查找值面试问题

下面给出了无限长数组,该数组具有自然数,因为它可以是无限长的:

int[] myArray = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 0, 1, 1, 1, 2, 1, 3 ......}; 

//在10位需要1,0,在11位需要1,1,在12位需要1,2,以此类推

index 0 = >  value 0 = >  number 0
index 1 = >  value 1 = >  number 1
index 2 = >  value 2 = >  number 2
index 3 = >  value 3 = >  number 3
index 4 = >  value 4 = >  number 4
index 5 = >  value 5 = >  number 5
index 6 = >  value 6 = >  number 6
index 7 = >  value 7 = >  number 7
index 8 = >  value 8 = >  number 8
index 9 = >  value 9 = >  number 9
index 10 = > value 1 = > number 10
index 11 = > value 0 = > number 10
index 12 = > value 1 = > number 11
index 13 = > value 1 = > number 11
index 14 = > value 1 = > number 12
index 15 = > value 2 = > number 12

....
....
....

对于索引9,值应为9,但对于索引10,而不是10,值应为1&;同样,在索引11的值应该是0,然后在索引12的值应该是1,依此类推

假设对于索引值10,我们得到的结果为1,对于值11,我们得到的结果值为0

我们必须编写逻辑,通过传递索引值来获得值,索引可以是0到10000000

我们不能直接使用数组来获取特定索引处的值,我们必须编写如下逻辑:

public int getValue(int index){

    int value = 0;

    //  logic to find the the value 

    return value;
}

我尝试了下面的方法来获得通过索引的结果,但它可以工作到两位数,即99。(直到索引189)。但对于三位数&;此外,我们必须改变逻辑

public static int myMethod(int index){
    System.out.println("index : " + index);

    if(index <= 9){
        return index;
    }

    boolean even = (index % 2) == 0;

    int num = 0 ;
    char res = 0;
    if(even){
        num = index - ((index - 10) / 2);
        System.out.println("num " + num);

        res = new Integer(num).toString().charAt(0);            
    }else{

        index = index -1;
        num = index - ((index - 10) / 2);
        System.out.println("num 22 : " + num);
        res = new Integer(num).toString().charAt(1);            
    }

    int result = new Integer(res+"");

    System.out.println(result);
    return result ;
}

共 (0) 个答案