鍊錶系列 3 21日

2021-10-04 06:37:44 字數 1354 閱讀 4556

今日刷題:

k 個鍊錶合併兩種解法

鍊錶排序 nlogn 時間複雜度

linklist solution::

mergekllist

(vector

&vec)

for(

auto i : vec)

}sort

(v.begin()

, v.

end(

), cmp)

;for

(auto i : v)

return head-

>next;

//方法二:多路歸併,遞迴思想 knlogkif(

!vec.

size()

)if(vec.

size()

==1)if

(vec.

size()

==2)int mid =

(int

)(vec.

size()

/2);

vector v1;

vector v2;

for(

int i =

0; i< mid; i++

)for

(int i = mid; i< vec.

size()

; i++

)

linklist l1 =

mergekllist

(v1)

; linklist l2 =

mergekllist

(v2)

;return

mergelist

(l1, l2);}

//把 list 摘下來,放入 vector 裡,然後快排一下重構這個 list 即可

void

quicksort

(std::vector<

int>

&arr; arr,

int left,

int right)

int i = left;

int j = right;

int key = arr[key]

;while

(i < j)

while

(i < j && arr[i]

<= key)

if(i < j)

} arr[left]

= arr[i]

; arr[i]

= key;

quicksort

(arr, left, i -1)

;quicksort

(arr, i +

1,right)

;}

鍊錶系列 3 19日

第一篇刷題思考 今日學習起步 鍊錶建立 頭插法 鍊錶建立 尾插法 鍊錶就地逆置 鍊錶定製 m 到 n 的位置節點逆置 尋找鍊錶公共節點 鍊錶是否有環,有環的話找到這個環的入口 an highlighted block typedef struct node node,list 頭插法,生成的是倒序的...

鍊錶系列 鍊錶環相關問題

設定兩個節點 slow fast,若存在環,分別從鍊錶的頭節點出發,乙個每次向後移動一步,另乙個移動兩步,兩個指標移動速度不一樣,如果存在環,那麼兩個指標一定會在環裡相遇。public boolean hascircle node head node slow head node fast head...

Day3 21 合併兩個有序鍊錶

將兩個公升序鍊錶合併為乙個新的 公升序 鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4 結果 class solution if l2 null if l1.val l2.val else 思路 用了遞迴的辦法,其中乙個字...