今日刷題:
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 思路 用了遞迴的辦法,其中乙個字...