[LeetCode][JavaScript]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.
https://leetcode.com/problems/remove-nth-node-from-end-of-list/
提示里说一遍循环就能搞定。
开个数组指向链表里的元素(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 };