Find Nth Element from End
public class Demo {
public static void main(String... args) {
LinkedList<String> list = new LinkedList<>();
Node<String> a = new Node<>("a");
list.add(a);
Node<String> b = new Node<>("b");
list.add(b);
Node<String> c = new Node<>("c");
list.add(c);
Node<String> d = new Node<>("d");
list.add(d);
Node<String> e = new Node<>("e");
list.add(e);
Node<String> f = new Node<>("f");
list.add(f);
// index
// 2 -> 3 -> 4 -> 5 -> 6
// 1. fast
// b -> c -> d -> e -> f
// 2. slow
// null -> null -> a -> b -> d
int index = 1;
Node<String> fast = a;
Node<String> slow = null;
while (fast.getNext() != null) {
index++;
fast = fast.getNext();
if (index > 3) { // slow it down by 3
if (slow == null) {
slow = a.getNext();
} else {
slow = slow.getNext(); // if index is bigger than 3, move slow every iteration
}
}
System.out.println(fast.getValue() + ", " + slow + " - " + index);
}
System.out.println("Third: " + slow.getValue());
}
}Last updated