Leetcode Note: Go - Reverse Linked List
Reverse Linked List - LeetCode
https://leetcode.com/problems/reverse-linked-list/
- Go 言語で取り組んだメモ
所感
- 与えられた Linked List を逆順にして return
回答
8ms Golang solution - LeetCode Discuss
https://leetcode.com/problems/reverse-linked-list/discuss/58293/8ms-Golang-solution
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func reverseList(head *ListNode) *ListNode {
var prev *ListNode
for head != nil {
head.Next, prev, head = prev, head, head.Next
}
return prev
}
var prev *ListNode
- ListNode を扱う prev 変数を定義
for head != nil {
引数で渡ってくる Node が nil じゃないか✅head.Next, prev, head = prev, head, head.Next
- head.Next = prev
- 次に reverseList に渡される Next を空の ListNode にしておく?
- 終端になるハズの nil を最初に入れて逆順にしていくということかな。自信なし
- prev = head
- return する prev に head を代入
- 操作の反転
- head = head.Next
- 現在の head と次の head を入れ替える
- 再帰呼び出しの繰り返しを進めるためのものという理解
- head.Next = prev
return prev
- head が nil だったら空の ListNode が入った prev
- head が nil じゃなければ head が代入された prev
【LeetCode】206. Reverse Linked Listを解く
https://zenn.dev/ike_pon/articles/ec970cc20e7ff05c850b
色々調べてみたが腹落ちできず。リスト操作のイメージが付いていないのが原因かもしれない。