/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func LLLen(head *ListNode) int {
var len int
t := head
for t != nil {
len++
t = t.Next
}
return len
}
func deleteMiddle(head *ListNode) *ListNode {
if head == nil {
return nil
}
if head.Next == nil {
return nil
}
if head.Next.Next == nil {
head.Next = nil
return head
}
sp, fp := head, head
// len := LLLen(head)
for {
fp = fp.Next
if fp == nil {
break
}
fp = fp.Next
if fp == nil || fp.Next == nil {
break
}
sp = sp.Next
}
// if len % 2 == 0 && sp.Next != nil {
// sp = sp.Next
// }
sp.Next = sp.Next.Next
return head
}