利用窗口机制解决问题,提高效率 ,查找一个单链表中,倒数第K个节点。 方法(1) 首先查找到整个链表中的元素个数, 然后再一次遍历该数组,找到第n-k+1个元素,即为所求。 缺点:这需要两次遍历链表,当链表中的元素个数很多的时候,耗费时间。 方法(2): 定义两个指针p,q,初始时都指向头节点间,然后q向后移动,p则保持不动。 当P移动到第K个位置的时候,pq两个节点同时向后移动,当q达到链表尾部的时候, p节点所指向的位置,即为所求。 这里充分利用了一个窗口机制,使用两个间隔为K的指针,来达到目的。 延伸: 求出一个排序完毕的数组中,相同数目元素出现次数大于100的元素。 这也需要一个窗口机制。即比较a[i] 与a[i+100]两个元素即可 。 代码如下:
posted on 2011-05-16 16:23 kahn 阅读(1382) 评论(0) 编辑 收藏 引用 所属分类: 算法相关
Powered by: C++博客 Copyright © kahn