Last K elements in LinkedList(CC150 2.2)

来源:互联网 发布:淘宝网手工布鞋 编辑:程序博客网 时间:2024/05/21 14:01
实现一个算法,发现singly linked list中倒数第k个元素;
思路1 
如果已知linked list 长度length, kth个元素为(length-k); 通过这种方式可以找到这个元素;
这种解法明显不是interviewer想要的

思路2
循环思路,两根指针,保持量指针定长距离为k;同时移动; p2初始位置为head,p1初始位置为k;

p1到linkedlist队尾时,即认为:p2的位置为倒数k位置

时间复杂度:O(N)

空间复杂度:O(1)



C#代码:

public static LinkedListNode <int > kthToLast(LinkedListNode< int> head, int k)        {            LinkedListNode<int > p1 = head;            LinkedListNode<int > p2 = head;            //从head移动p2,k-1步            for ( int i = 0; i < k; i++)            {                if (p2 == null) return null;                p2 = p2.Next;            }            //同时移动p1,p2;            while (p2 != null)            {                p1 = p1.Next;                p2 = p2.Next;            }            return p1;        }


0 0
原创粉丝点击