【发布时间】:2018-01-06 02:49:08
【问题描述】:
下面给出了无限长的数组,它具有自然数,因为它可以是无限长的:
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 ;
}
【问题讨论】:
-
我读了两遍,但没有理解问题所在。不知道这是我的问题还是不清楚。
-
您只需要创建一个方法,该方法将 int 作为参数并返回该 int 的 10 的模数。
-
index = 30 会发生什么?
-
为什么不使用数组?
-
这是面试官问的一些面试问题,我们必须编写一个逻辑来找到给定索引的值。
标签: java arrays algorithm data-structures logic