Twice linearjava
import java.util.*; import java.util.Map.Entry; class DoubleLinear { private static Map<Integer, Boolean> map = new TreeMap<Integer, Boolean>(); private static int[] arr = new int[100000]; static { map.put(1, false); int count = 0; while (count < 100000) { for (Entry<Integer, Boolean> x : map.entrySet()) { if (!x.getValue()) { map.put(x.getKey() * 2 + 1, false); map.put(x.getKey() * 3 + 1, false); arr[count++] = x.getKey(); map.remove(x.getKey()); break; } } } Arrays.sort(arr); } public static int dblLinear(int n) { return arr[n]; } }
import static org.junit.Assert.*; import org.junit.Test; public class DoubleLinearTest { private static void testing(int actual, int expected) { assertEquals(expected, actual); } @Test public void test() { System.out.println("Fixed Tests dblLinear"); testing(DoubleLinear.dblLinear(10), 22); testing(DoubleLinear.dblLinear(20), 57); testing(DoubleLinear.dblLinear(30), 91); testing(DoubleLinear.dblLinear(50), 175); } }