JavaScriptでのHackerrankのノード削除方法


まず、ノード削除の基本的な方法を見てみましょう。以下のコード例では、単方向連結リストのノードを削除する方法を示します。

class Node {
  constructor(data) {
    this.data = data;
    this.next = null;
  }
}
class LinkedList {
  constructor() {
    this.head = null;
  }
  deleteNode(key) {
    let currentNode = this.head;
    let prevNode = null;
    // ヘッドノードが削除対象の場合
    if (currentNode !== null && currentNode.data === key) {
      this.head = currentNode.next;
      return;
    }
// リストを探索して削除対象のノードを見つける
    while (currentNode !== null && currentNode.data !== key) {
      prevNode = currentNode;
      currentNode = currentNode.next;
    }
// ノードを見つけた場合、削除する
    if (currentNode !== null) {
      prevNode.next = currentNode.next;
    }
  }
}
// 使用例
const linkedList = new LinkedList();
linkedList.head = new Node(1);
linkedList.head.next = new Node(2);
linkedList.head.next.next = new Node(3);
linkedList.head.next.next.next = new Node(4);
console.log("削除前:");
console.log(linkedList);
linkedList.deleteNode(3);
console.log("削除後:");
console.log(linkedList);

上記のコードでは、LinkedListNode のクラスを定義し、deleteNode 関数で指定されたキーに対応するノードを削除します。ノードが見つかった場合は、その前後のノードを適切につなぎ替えることでノードを削除します。

このコード例は単方向連結リストに対するノード削除の方法ですが、他のデータ構造に対しても同様のロジックが適用できます。例えば、二重連結リストや二分木などでも利用することができます。

以上がJavaScriptでHackerrankのノード削除を行う方法とそのコード例です。この方法を応用して、他の問題にも活用してみてください。