鍊錶的分化練習

2021-07-27 07:01:24 字數 767 閱讀 5417

對於乙個鍊錶,我們需要用乙個特定閾值完成對它的分化,使得小於等於這個值的結點移到前面,大於該值的結點在後面,同時保證兩類結點內部的位置關係不變。

給定乙個鍊錶的頭結點head,同時給定閾值val,請返回乙個鍊錶,使小於它的結點在前,大於它的在後,d等於它的節點在中間。保證結點值不重複。

測試樣例:

,3 兩種做法,第一種可以直接將鍊錶放到乙個陣列中,然後類似荷蘭國旗問題進行處理。空間複雜度為o(n)

第二種直接操作鍊錶,給定三個煉表頭:分別指向小於,相等,大於。之後拼接三個鍊錶即可

**如下:

/*

struct listnode

};*/

class divide

else

if(head->val==val)

else

}if(less->next&&equ->next&&more->next)

else

if(less->next&&!equ->next&&more->next)

else

if(less->next&&equ->next&&!more->next)

else

if(!less->next&&equ->next&&more->next)

else

if(!less->next&&!equ->next&&more->next)

else

return

null;

}};

鍊錶分化問題

鍊錶分化問題為給定乙個閾值,使得小於等於這個閾值的結點移到前面,大於這個閾值的結點移到後面,同時保證兩類結點的內部位置關係不變。思路一 把鍊錶元素放到陣列中,利用快排思想進行排序,類似荷蘭國旗問題,但因為涉及到交換,不能保證同一類結點內部位置關係不變。思路二 將小於等於這個閾值的結點生成乙個鍊錶,大...

nowcoder 鍊錶的分化

對於乙個鍊錶,我們需要用乙個特定閾值完成對它的分化,使得小於等於這個值的結點移到前面,大於該值的結點在後面,同時保證兩類結點內部的位置關係不變。給定乙個鍊錶的頭結點head,同時給定閾值val,請返回乙個鍊錶,使小於等於它的結點在前,大於等於它的在後,保證結點值不重複。測試樣例 3 用兩個臨時鍊錶記...

鍊錶演算法之鍊錶分化

對於乙個鍊錶,我們需要用乙個特定閾值完成對它的分化,使得小於等於這個值的結點移到前面,大於該值的結點在後面,同時保證兩類結點內部的位置關係不變。給定乙個鍊錶的頭結點head,同時給定閾值val,請返回乙個鍊錶,使小於等於它的結點在前,大於等於它的在後,保證結點值不重複。測試樣例 3 思路 新建兩個鍊...