網(wǎng)站升級(jí)改版百度seo2022新算法更新
題目:
給你一個(gè)鏈表的頭節(jié)點(diǎn)?
head
?和一個(gè)特定值?x
?,請(qǐng)你對(duì)鏈表進(jìn)行分隔,使得所有?小于?x
?的節(jié)點(diǎn)都出現(xiàn)在?大于或等于?x
?的節(jié)點(diǎn)之前。你應(yīng)當(dāng)?保留?兩個(gè)分區(qū)中每個(gè)節(jié)點(diǎn)的初始相對(duì)位置。
來源:力扣(LeetCode)
鏈接:力扣(LeetCode)官網(wǎng) - 全球極客摯愛的技術(shù)成長(zhǎng)平臺(tái)
示例:
示例 1:
輸入:head = [1,4,3,2,5,2], x = 3
輸出:[1,2,2,4,3,5]
示例 2:輸入:head = [2,1], x = 2
輸出:[1,2]
解法:
轉(zhuǎn)成列表處理。設(shè)index為0,表示分界點(diǎn),遍歷列表,如果當(dāng)前值(num)小于x,insert(index, num),index += 1,否則,append(num)。
代碼:
# Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution:def partition(self, head: Optional[ListNode], x: int) -> Optional[ListNode]:list1 = []list2 = []while head:list1.append(head.val)head = head.nextindex = 0for num in list1:if num < x:list2.insert(index, num)index += 1else:list2.append(num)head = point = ListNode()for num in list2:point.next = ListNode(num)point = point.nextreturn head.next