Vova
BAN USERpublic int[][] moves = new int[10][]{
new int[]{4, 6},
new int[]{6, 8},
new int[]{7, 9},
new int[]{4, 8},
new int[]{0, 3, 9},
new int[]{},
new int[]{0, 1, 7},
new int[]{2},
new int[]{1, 3},
new int[]{2}
};
public int paths = 0;
public int findNumberOfPaths(int digit, int steps) {
goOnPaths(digit, steps, 0);
return paths;
}
public void goOnPaths(int digit, int steps, int step) {
if (step == steps) {
paths++;
return;
}
for (int move : moves[digit]) {
goOnSteps(move, steps, step + 1);
}
}
public static LinkedList<Byte> sumOfLists(LinkedList<Byte> one, LinkedList<Byte> two) {
LinkedList<Byte> result = new LinkedList<>();
ListIterator<Byte> iterator1 = one.listIterator(one.size());
ListIterator<Byte> iterator2 = two.listIterator(one.size());
int rest = 0;
while (iterator2.hasPrevious() && iterator2.hasPrevious()) {
Byte number1 = iterator1.previous();
Byte number2 = iterator2.previous();
int sum = number1 + number2 + rest;
rest = sum / 10;
result.addFirst((byte) (sum % 10));
}
ListIterator<Byte> restIterator = null;
if (iterator1.hasPrevious()) {
restIterator = iterator1;
} else if (iterator2.hasPrevious()) {
restIterator = iterator2;
}
if (restIterator != null) {
while (restIterator.hasPrevious()) {
Integer sum = restIterator.previous() + rest;
rest = sum / 10;
result.addFirst((byte) (sum % 10));
}
}
if (rest > 0) {
result.addFirst((byte) rest);
}
return result;
}
public class DictionaryWithLast<K, V> {
private final List<KVP<K, V>> list = new LinkedList<>();
public void set(K key, V value) {
list.add(new KVP.create(key, value));
}
public V get(K key) {
KVP<K, V> result = null;
for (KVP<K, V> kvp : list) {
if (equals(kvp.key, key)) {
result = kvp.value;
break;
}
}
if (result != null) {
// make last after read
delete(result.key);
set(result.key, result.value);
}
return result;
}
public void delete(K key) {
int index = -1;
Iterator<KVP<K, V>> iterator = list.iterator();
while (iterator.hasNext()) {
KVP<K, V> kvp = iterator.next();
if (equals(kvp.key, key)) {
iterator.remove();
return;
}
}
}
public K last() {
return list.isEmpty() ? null : list.get(list.size() - 1).key;
}
private static boolean equals(Object one, Object other) {
// in case we are not allowed to use Objects.equals, we can write our own
return Objects.equals(one, other);
}
private static class KVP<K, V> {
final K key;
final V value;
KVP(K k, V v) {
key = k;
value = v;
}
<K, V> static KVP<K, V> create(K k, V v) {
return new KVP<>(k, v);
}
}
}
- Vova January 26, 2019