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

編輯切換為居中

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

編輯切換為居中

編輯切換為居中

編輯切換為居中

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

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