ChatGPT刷力扣面試題 02.04. 分割鏈表(可用于區(qū)分奇偶節(jié)點(diǎn))
直播截圖

編輯切換為居中

編輯切換為居中
開(kāi)始解題(Java+python)

編輯切換為居中

編輯切換為居中

編輯切換為居中

編輯切換為居中
實(shí)際應(yīng)用
這個(gè)函數(shù)可以用于將一個(gè)鏈表按照某個(gè)特定值 x 進(jìn)行分區(qū)。可以將小于 x 的節(jié)點(diǎn)放在前面,大于等于 x 的節(jié)點(diǎn)放在后面。
這個(gè)函數(shù)的實(shí)際應(yīng)用可以是解決一些與鏈表相關(guān)的問(wèn)題。例如,給定一個(gè)鏈表,要求將鏈表中的奇數(shù)節(jié)點(diǎn)和偶數(shù)節(jié)點(diǎn)分開(kāi),并保持它們的相對(duì)順序不變??梢允褂眠@個(gè)函數(shù)來(lái)將鏈表分為兩個(gè)部分,其中一個(gè)部分包含奇數(shù)節(jié)點(diǎn),另一個(gè)部分包含偶數(shù)節(jié)點(diǎn)。
另一個(gè)例子是,給定一個(gè)鏈表,要求將鏈表分為三個(gè)部分,其中一個(gè)部分包含小于 x 的節(jié)點(diǎn),另一個(gè)部分包含等于 x 的節(jié)點(diǎn),最后一個(gè)部分包含大于 x 的節(jié)點(diǎn)??梢允褂眠@個(gè)函數(shù)來(lái)實(shí)現(xiàn)這個(gè)功能。
逐步驗(yàn)算

編輯切換為居中
首先,給定輸入為 head = [1,4,3,2,5,2], x = 3。 初始化 smallHead、smallTail、largeHead、largeTail 指針: smallHead = ListNode(0) smallTail = smallHead largeHead = ListNode(0) largeTail = largeHead 進(jìn)入循環(huán),遍歷鏈表 head: 當(dāng) head = 1 時(shí),1 < 3,將該節(jié)點(diǎn)插入到小鏈表中: smallTail.next = head,即 smallHead.next = 1 smallTail = smallTail.next,即 smallTail = 1 當(dāng) head = 4 時(shí),4 >= 3,將該節(jié)點(diǎn)插入到大鏈表中: largeTail.next = head,即 largeHead.next = 4 largeTail = largeTail.next,即 largeTail = 4 當(dāng) head = 3 時(shí),3 >= 3,將該節(jié)點(diǎn)插入到大鏈表中: largeTail.next = head,即 largeHead.next = 4 -> 3 largeTail = largeTail.next,即 largeTail = 3 當(dāng) head = 2 時(shí),2 < 3,將該節(jié)點(diǎn)插入到小鏈表中: smallTail.next = head,即 smallHead.next = 1 -> 2 smallTail = smallTail.next,即 smallTail = 2 當(dāng) head = 5 時(shí),5 >= 3,將該節(jié)點(diǎn)插入到大鏈表中: largeTail.next = head,即 largeHead.next = 4 -> 3 -> 5 largeTail = largeTail.next,即 largeTail = 5 當(dāng) head = 2 時(shí),2 < 3,將該節(jié)點(diǎn)插入到小鏈表中: smallTail.next = head,即 smallHead.next = 1 -> 2 -> 2 smallTail = smallTail.next,即 smallTail = 2 遍歷完鏈表后,將大鏈表的尾節(jié)點(diǎn)指向 null,即 largeTail.next = null,此時(shí)大鏈表為 4 -> 3 -> 5 -> null。 將小鏈表的尾節(jié)點(diǎn)指向大鏈表的頭節(jié)點(diǎn),即 smallTail.next = largeHead.next,此時(shí)小鏈表為 1 -> 2 -> 2 -> 4 -> 3 -> 5 -> null。 返回小鏈表的頭節(jié)點(diǎn),即 smallHead.next,即返回鏈表 1 -> 2 -> 2 -> 4 -> 3 -> 5 -> null。 最終輸出為 [1, 2, 2, 4, 3, 5],符合預(yù)期結(jié)果。
、