この解答例は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;
}
再起を使った方がコードが短く、理解しやすい可能性があります。しかし、再起を使用するとスタックオーバーフローのリスクがありますので、入力が非常に大きい場合には注意が必要です。