利用窗口機制解決問題,提高效率 ,查找一個單鏈表中,倒數第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 閱讀(1406) 評論(0) 編輯 收藏 引用 所屬分類: 算法相關
Powered by: C++博客 Copyright © kahn