public static ListNode delN(ListNode pHead, int n) {
        if (pHead == null || n < 1) {
            return null;
        }
        //统计链表长度
        int size = 0;
        //n节点前节点指针
        ListNode nPre = null;
        //快指针
        ListNode fast = pHead;
        for (int i = 1; fast != null; i++) {
            //当快指针走了n步,慢指针开始走,那么就是i>=n,但这里慢指针定义为前指针所以应该慢走一步,i>n
            if (i > n) {
                if (nPre == null) {
                    nPre = pHead;
                }else {
                    nPre = nPre.next;
                }
            }
            //快指针遍历整个链表
            fast = fast.next;
            size++;
        }
        //n符合要求的话,这步可以省略
        if (n > size) {
            return pHead;
        }
        //删除头节点
        if (n == size) {
            return pHead.next;
        }
        //删除操作
        ListNode node = nPre.next;
        if (node != null) {
            ListNode next = node.next;
            node = null;
            nPre.next = next;
        }
        return pHead;
    }