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) 个答案