標籤:
https://leetcode.com/problems/remove-nth-node-from-end-of-list/
Remove Nth Node From End of List
Given a linked list, remove the nth node from the end of list and return its head.
For example,
Given linked list: 1->2->3->4->5, and n = 2. After removing the second node from the end, the linked list becomes 1->2->3->5.
Note:
Given n will always be valid.
Try to do this in one pass.
提示裡說一遍迴圈就能搞定。開個數組指向鏈表裡的元素(js裡存的是對象的引用),數組的下標就是順序,只要找倒數第n個數組元素,把他前一個指向他的後一個就好了。異常邊界值無非就是,沒有前一個,沒有後一個和鏈表只有一個元素。我又要吐槽js好坑啊,空的話不應該返回{}嗎, node節點都是對象啊,他居然需要返回[]。
1 /** 2 * @param {ListNode} head 3 * @param {number} n 4 * @return {ListNode} 5 */ 6 var removeNthFromEnd = function(head, n) { 7 var cache = []; 8 var i = 0; 9 var current = head;10 while(current){11 cache[i] = current;12 i++;13 current = current.next;14 }15 16 var index = cache.length - n;17 18 if(!cache[index - 1]){19 return cache[1] || [];20 }else if(!cache[index + 1]){21 cache[index - 1].next = null;22 return cache[0]; 23 }else{24 cache[index - 1].next = cache[index + 1];25 return cache[0]; 26 }27 };
[LeetCode][JavaScript]Remove Nth Node From End of List