左神演算法學習日記 單鏈表(一)

2021-09-18 02:52:58 字數 1035 閱讀 5959

最近在找實習工作,做個左神演算法的學習日記,方便以後鄙視自己。

題一:判斷乙個鍊錶是否為回文結構

【題目】

給定乙個鍊錶的頭節點head, 請判斷該鍊錶是否為回文結構。

例如:1->2->1, 返回true。

1->2->2->1, 返回true。

15->6->15, 返回true。

1->2->3, 返回false。

高階:如果鍊錶長度為n, 時間複雜度達到o(n), 額外空間複雜度達到o(1)。

#include#include#include#includeusing namespace std;

class node//結點類

};class list//鍊錶類,包含每個鍊錶的頭尾結點,實現了從末尾插入的insert,

void insert(int dum)

else

}~list()//第一次實現析構鍊錶,還挺難 }

};int main()

node *fast = l.head, *mid = l.head;

while (fast != l.end && fast->next != l.end)

//中點以後實現指標翻轉

node *dum = mid->next;

mid->next = nullptr;

node *n = nullptr;

while (dum)

//判斷是否是回文

node *begin = l.head;

node *end = l.end;

int a = 1;

while (end)

begin = begin->next;

end = end->next;

} //將鍊錶恢復原樣

mid = l.end;

dum = mid->next;

mid->next = null;

while (dum)

cout << a;

}

左神演算法學習日記 堆(一)

一直覺得赫夫曼樹沒什麼diao用,沒想到這道題可以用赫夫曼樹,而且用小根堆可以實現赫夫曼樹,學到好多。題目二一塊金條切成兩半,是需要花費和長度數值一樣的銅板的。比如長度為20的金條,不管切成長度多大的兩半,都要花費20個銅板。一群人想整分整塊金條,怎麼分最省銅板?例如,給定陣列,代表一共三個人,整塊...

左神演算法學習日記 堆(二)

include include include include include include include includeusing namespace std class project project const project p push進堆時用到了拷貝建構函式,雖然不寫也無所謂 pro...

左神演算法學習日記 樹dp

樹dp問題只需要考慮每個結點的所有孩子的情況就可以解決 class node node class treeinf void creat node node if r 獲得子樹中結點最多的搜尋二叉樹的結點個數 treeinf getmaxnode node node treeinf leftinf ...