Article Outline
説明
- ポインタでつながったリンク配列がある。
- この配列の長さの半分の整数値(7なら3)のインデックスの要素を削除したものを返す。
原文
You are given the head of a linked list. Delete the middle node, and return the head of the modified linked list.
The middle node of a linked list of size n is the ⌊n / 2⌋th node from the start using 0-based indexing, where ⌊x⌋ denotes the largest integer less than or equal to x.
For n = 1, 2, 3, 4, and 5, the middle nodes are 0, 1, 1, 2, and 2, respectively.
例題との相違点
- 自分の回答(248ms)
- 配列の最初にダミーの要素を追加した。
- これにより、次の次を参照してもエラーにならなくなった。
- 基本的には長さを求めて、半分の阿多愛を出して、先頭からたどって削除対象のインデックスになったら、nextをnext.nextに置き換える。
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func deleteMiddle(head *ListNode) *ListNode {
dummy := &ListNode{Next: head}
length := 0
for node := head; node != nil; node = node.Next {
length++
}
delIndex := length / 2
workHead := dummy
for i := 0; i < delIndex; i++ {
workHead = workHead.Next
}
workHead.Next = workHead.Next.Next
return dummy.Next
}
- 回答例(なし)
感想
- とくになし