Leetcode # 143. Reorder List
- 2021.12.22
- LeetCode Linked List
https://leetcode.com/problems/reorder-list/
Key point
使用一快一慢的pointer來找到length和middle node
Solution
class Solution: def reorderList(self, head: Optional[ListNode]) -> None: """ Do not return anything, modify head in-place instead. """ # Find length and middle node n = 0 cur = head half = head while cur: n += 1 if n % 2 == 0: half = half.next cur = cur.next # Reverse the second half part of the list pre, cur = None, half while cur: cur_next = cur.next cur.next = pre pre = cur cur = cur_next # Merge the first half part and the second half part cur = [head, pre] for i in range(n - 1): cur_next = cur[i % 2].next cur[i % 2].next = cur[(i + 1) % 2] cur[i % 2] = cur_next
Last Updated on 2023/08/16 by A1go