将整数 1-max 映射到 1-1,000,000 之间的 100 个整数

  • 本文关键字:整数 之间 1-max 映射 java
  • 更新时间 :
  • 英文 :


我需要将一个 Java 整数从 1-max 范围映射到范围 1-1,000,000,但只能在目标范围内使用 100 个特定(非线性(值。 这 100 个值是:
1-10(所以前 10 个值映射到自己(
然后按 5:15、20、25 ...到 100
然后到 50 年代:150、200、250 ...到 1,000 等等,最终值是 900,000 950,000
和 1,000,000  
我无法完全理解比一袋嵌套的 if/else-if's 更优雅的东西。
该解决方案对时间/周期不敏感。

我认为这将通过两个循环来完成。


List<Integer> values =
new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10));
int x = 1;
while (x < 100_000) {
for (int k = 15 * x; k <= 100 * x; k += 5 * x) {
values.add(k);
}
x *= 10;
}
values.forEach(System.out::println);

生成一个元素数组,然后查找结果。 您只需构建一次阵列。

List<Integer> list = new ArrayList<>();
// note we start at 0 so indexes work as expected.
for(int i=0;i<10;i++) list.add(i);
for(int i=10;i<100;i+=5) list.add(i);
etc...
Integer result = list.get(input);

最新更新