Java code
class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
if(n == 0) {
return head;
}
ListNode temp = head;
int length = 0;
while(true) {
if(temp == null) {
break;
}
temp = temp.next;
length++;
}
int m = length - n;
if(n == length) {
return head.next;
}
temp = head;
for(int i = 0; i < m - 1; i++) {
temp = temp.next;
}
temp.next = temp.next.next;
return head;
}
}