Leetcode #19 刪除鏈表的倒數第N個節點
題目描述:
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
示例:
给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5.
说明:
给定的 n 保证是有效的。
进阶:
你能尝试使用一趟扫描实现吗?
解法:
/** * Definition for singly-linked list. * function ListNode(val) { * this.val = val; * this.next = null; * } */ /** * @param {ListNode} head * @param {number} n * @return {ListNode} */ var removeNthFromEnd = function(head, n) { let length = 0; let currentNode = head; // 得出鏈表長度 while(currentNode) { console.log("currentNode=",currentNode.val); currentNode = currentNode.next; length++; } // 算出要刪除元素的位置(從0開始計算),減掉給的n let index = length - n; currentNode = head; console.log("length=",length); console.log("index=",index); // 如果要刪除的是第一個元素,則直接置換成下一個node if (index == 0) { return currentNode.next; } for (let i = 0; i < length; i++) { console.log("currentNode1=",currentNode.val); console.log("i=",i); // 遍歷到要刪除的前一個元素 if (i == (index - 1)) { // 減一代表把前一項置換掉 currentNode.next = currentNode.next.next; return head; } else { currentNode = currentNode.next; } } };
題目連結:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/description/

Vance
0
Tags :