public ListNode find(ListNode listNode, int k) {
    validateInput(listNode, k);

    ListNode reversedList = reverseLinkedList.reverseIterative(listNode);
    ListNode result = reversedList;
    while (k > 0) {
      result = result.getNext();
      if (result == null) {
        throw new IndexOutOfBoundsException();
      }
      k--;
    }
    return result;
  }
Iterative algorithm based on reverse the singly linked list and iterate over the reversed list
to find the kth element. This algorithm has a complexity order in time terms equals
to O(N) where N is the number of elements in the list. Remember that our reverse algorithm
also has O(N) as complexity order. In space terms we get O(1) because we are not using any
auxiliary data structure.
src/main/java/com/github/pedrovgs/problem58/FindKthElement.java