面試題 列印鍊錶中前k大的數

2022-08-31 00:27:12 字數 913 閱讀 6857

之前在刷leetcode的時候碰到過類似的題目,但是要求解第k大的數,那麼只需要使用快慢指標,快指標先走k步,然後等快指標到達末尾時,慢指標指向的元素即為倒數第k的元素。

現在這個題目略有不同,是要求求煉表中前k個元素,顯然是大資料面試中的topk問題,可以建立乙個最小堆來解決這個問題,每次遍歷便將與堆頂元素比較,當大於堆頂元素時便插入堆,最後輸出所有堆中元素即可。

#include #include using namespace std;

struct node

};templateclass heap

heap(const t *data, int k)

void createheap(const t *a, int k)

}void adjustheap(int pa)

else }}

t& top()

void push(int& x)

void print()

else if (hp.top() < p->val)

}hp.print();

}void test()

; int len = sizeof(a) / sizeof(a[0]);

int k = 3;

gettopk(a, k, len);

}void testlist()

; int len = 7;

int k = 3;

for (int i=0;inext = vhead->next;

vhead->next = p;

//vhead->next = p;

//vhead = p;

}getlisttopk(ret->next, k, len);

}int main()

面試題 從尾到頭列印鍊錶 鍊錶中倒數第K個結點

從尾到頭列印鍊錶 鍊錶結構體 struct node pnode 思路 一般列印時不應該改變鍊錶本身的結構,也就是說第乙個遍歷到最後乙個,最後乙個節點第乙個輸出。後進先出,非遞迴應該用棧。遞迴 缺點 當鍊表過長時,會導致遞迴層次太深 從尾到頭列印鍊錶 void printlistreversingl...

鍊錶的面試題

1 比較順序表和煉表的優缺點,它們分別在什麼場景下使用?1 順序表支援隨機訪問,單鏈表不支援隨機訪問。2 順序表插入 刪除資料效率很低,時間複雜度為o n 除尾插和尾刪 單鏈表插入 刪除效率更高,時間複雜度為o 1 3 順序表的cpu高速緩衝效率更高,單鏈表cpu高速緩衝效率低。2 列印單向鍊錶 v...

鍊錶的面試題

slist.h include include include typedef int datatype typedef struct listnode node,pnode 生成乙個新結點 pnode buyslistnode datatype data 列印鍊錶 void printslist ...