LinkedList: Remove the kth node form the end
head = head.next

would accomplish nothing. It would only change the local variable head.
Read the question again:

Furthermore, the input head of the linked list should remain the head of the linked list after the removal is done, even if the head is the node that's supposed to be removed.

Since you cannot change what node is the head, you change the contents of that node.