我在做一个CodeFights问题,试图从一个值为k的单链表中移除元素。
下面是我所拥有的(l是列表,k是值):
function removeKFromList(l, k) {
//figure out the head of the new list so we can reference it later
var head = l;
while (head.value === k){
head = head.next;
}
var node = head;
var temp = null;
while (node && node !== null) {
if (node.next.value === k){
temp = node.next.next;
node.next.next = null;
node.next = temp;
}
node = node.next;
console.log("+++", head)
}
console.log("---", head)
}
CodeFight测试投是3 -〉1 -〉2 -〉3 -〉4 -〉5。最终结果应该是1 -〉2 -〉4 -〉5。但是我的“---”控制台日志一直返回“空”(根据CodeFights控制台)。
我的“+++”控制台日志在每个循环中返回了正确的标题和元素。
我一直在为这件事烦恼,你知道这里缺了什么吗?
4条答案
按热度按时间webghufk1#
如果删除第一个节点,则需要返回列表。
然后你需要一个循环来获取下一个not,而这个值是找不到的。
最后,您需要检查最后一个节点是否存在,如果找到值,则将下一个节点分配给last next属性。
qyswt5oh2#
试试这个:
ygya80vv3#
这也可以通过递归来完成:
6ovsh4lw4#
易于理解的解决方案: