この解答例はChatGPTによって生成されています,正しいかは自己判断で。 皆の投稿からも解答例が見つかるかもしれませんよ。
BFE.devでのAI解答例 - JavaScript コーディング問題
47. linked listを逆順にする
解答例:
再起を使わずに解く場合:
function reverseLinkedList(head: Node): Node { // 空のリストの場合 if (!head) { return null; } let prev = null; let curr = head; while (curr) { const next = curr.next; curr.next = prev; prev = curr; curr = next; } return prev;}
再起を使って解く場合:
function reverseLinkedList(head: Node): Node { // 空のリストの場合 if (!head || !head.next) { return head; } const reversedHead = reverseLinkedList(head.next); head.next.next = head; // 現在のノードを反転したリストの最後に挿入 head.next = null; // 現在のノードのnextをnullに設定 return reversedHead;}
再起を使った方がコードが短く、理解しやすい可能性があります。しかし、再起を使用するとスタックオーバーフローのリスクがありますので、入力が非常に大きい場合には注意が必要です。