public ListNode removeNthFromEnd (ListNode head, int n) {
        // write code here
        // 节点个数
        int count = 0;
        // 当前节点
        ListNode curNode = head;
        while (curNode != null) {
            count ++;
            curNode = curNode.next;
        }
        // 删除倒数第count个,即头节点
        if (count == n) {
            head = head.next;
            return head;
        }
        // 重新指定当前节点
        curNode = head;
        // 被删除节点的前一个节点
        ListNode preNode = head;
        for (int i = 0; i < count - n; i++) {
            preNode = curNode;
            curNode = curNode.next;
        }
        preNode.next = curNode.next;
        return head;
    }