首页 > 解决方案 > 将整数 1-max 映射到 1-1,000,000 的 100 个整数

问题描述

我需要将 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 更优雅的东西。
该解决方案对时间/周期不敏感。

标签: java

解决方案


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

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);

推荐阅读