HTMLify

LeetCode - Delete the Middle Node of a Linked List - Go
Views: 16 | Author: abh
/**
 * 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	
}

Comments