Javascript 恒定空间,一次传递,每日编码问题

Javascript 恒定空间,一次传递,每日编码问题,javascript,time-complexity,complexity-theory,space-complexity,Javascript,Time Complexity,Complexity Theory,Space Complexity,这是日常编码问题: 给定一个单链表和一个整数k,从列表中删除最后的第k个元素。k保证小于列表的长度 这个名单很长,所以做一次以上的通行证是非常昂贵的 在恒定的空间内一次性完成此操作。” 以下是我的解决方案: function removeKthFromEnd() { var previous = list.head; var kth = list.head; var end = list.head; for(var i = 0; i < k; i++){

这是日常编码问题:

给定一个单链表和一个整数k,从列表中删除最后的第k个元素。k保证小于列表的长度

这个名单很长,所以做一次以上的通行证是非常昂贵的

在恒定的空间内一次性完成此操作。”

以下是我的解决方案:

function removeKthFromEnd() {
    var previous = list.head;
    var kth = list.head;
    var end = list.head;
    for(var i = 0; i < k; i++){
        end = end.next;
    }
    while(end != null) {
        previous = kth;
        end = end.next;
        kth = kth.next;

    }
    previous.next = kth.next;
    kth = null;
}
函数removeKthFromEnd(){
var previous=list.head;
var kth=list.head;
var end=list.head;
对于(变量i=0;i
我将kth、previous和end设置为列表的开头,在链表中遍历k个项目,使kth和end之间的空间=k,然后增加kth和previous,等待end.next==null,此时,kth将指向最后一个元素的第k个,而previous指向它前面的一个。然后只需通过使previous.next=kth.next将列表缝合回去

我的问题是:

这是恒定空间吗?是一张票吗


谢谢。

是的,列表中只有一个循环,所以您只通过了一次。无论输入的大小如何,都会分配相同的三个变量,因此也使用常量空间。

什么是“常量空间”?我以前从未听说过。是的,你肯定是一次就完成了,而且没有使用任何额外的空间。@FrankerZ这意味着你在算法中使用的内存(空间)没有持续增长。干得好。我建议把你的尝试作为一个答案,并获得一些选票,这样其他提出同样问题的人可以看到这个正确答案。