二、鍊錶給定乙個陣列arr, 和乙個數num, 請把小於num的數放在陣列的左邊, 等於num的數放在陣列的中間, 大於num的數放在陣列的右邊。2.3 測試結果及**
;// 原始陣列
int tmp1[size]=;
// 測試陣列
int tmp2[size]=;
// 對比陣列
int t***[size]=;
// 展示陣列
for(
int cnt =
0; cnt < test_time;
++cnt)
for(
int i =
0; i < size;
++i)
cout <<
"第 "
<< cnt <<
" 次生成:"
;printarray
(t***, size)
;compare
(tmp1, size)
; cout <<
"第 "
<< cnt <<
" 次對比:"
;printarray
(tmp1, size)
;// test(tmp2, size);
// cout << "第 " << cnt << " 次測試:";
// printarray(tmp2, size);
cout << endl;
}return0;
}鍊錶結構定義如下
首先放到陣列裡,然後重建鍊錶
由於荷蘭國旗問題做不到穩定性,其次額外空間複雜度是o(n),於是有這種解法,使這個問題能夠滿足穩定性
以及額外空間複雜度o(1)
第一步:元素進入對應鍊錶
準備三個鍊錶less,equal,more
然後不斷去遍歷原始鍊錶,逐個判斷大小關係,逐個對應地加入鍊錶less,equal,more
第二步:重連鍊錶
該步驟主要是考慮哪乙個鍊錶是空的,然後重新連線就可以了
// 重新連線鍊錶
listnode *phead;
if(sh !=
null)}
else
} phead = sh;
}else
phead = eh;
}else
}return phead;}}
;int
main
(int argc,
char
*ar**)
printnode
(head)
;
solution solution;
head = solution.
smallerequalbigger
(head,2)
; cout <<
"第 "
<< cnt +
1<<
" 次測試:\n"
;printnode
(head)
; cout << endl;
}return0;
}
刷題筆記 相交鍊錶
輸入 intersectval 8,lista 4,1,8,4,5 listb 5,0,1,8,4,5 skipa 2,skipb 3 輸出 reference of the node with value 8 輸入解釋 相交節點的值為 8 注意,如果兩個列表相交則不能為 0 從各自的表頭開始算起,...
刷題筆記24 判斷鍊錶是否回文鍊錶
給定乙個鍊錶的頭節點head,請判斷該鍊錶是否為回 文結構。例如 1 2 1,返回true。1 2 2 1,返回true。15 6 15,返回true。1 2 3,返回false。遍歷鍊錶,元素入棧,彈出時再從頭判斷即可 時間複雜度和額外空間複雜度都是o n 利用快慢指標,快指標走兩步,慢指標走一步...
LeetCode刷題筆記 328 奇偶鍊錶
給定乙個單鏈表,把所有的奇數節點和偶數節點分別排在一起。請注意,這裡的奇數節點和偶數節點指的是節點編號的奇偶性,而不是節點的值的奇偶性。請嘗試使用原地演算法完成。你的演算法的空間複雜度應為 o 1 時間複雜度應為 o nodes nodes 為節點總數。示例 輸入 2 1 3 5 6 4 7 nul...