【LeetCode】86. Partition List 分隔連結串列(Medium)(JAVA)每日一題
阿新 • • 發佈:2021-01-09
技術標籤:LeetCode 每日一題連結串列javaleetcode面試演算法導論
【LeetCode】86. Partition List 分隔連結串列(Medium)(JAVA)
題目地址: https://leetcode.com/problems/partition-list/
題目描述:
Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x.
You should preserve the original relative order of the nodes in each of the two partitions.
Example:
Input: head = 1->4->3->2->5->2, x = 3
Output: 1->2->2->4->3->5
題目大意
給定一個連結串列和一個特定值 x,對連結串列進行分隔,使得所有小於 x 的節點都在大於或等於 x 的節點之前。
你應當保留兩個分割槽中每個節點的初始相對位置。
解題方法
- 用兩個連結串列分別儲存比 x 小的數和比 x 大的數
- 最後把兩個連結串列合起來即可
class Solution { public ListNode partition(ListNode head, int x) { ListNode small = new ListNode(); ListNode smallPre = small; ListNode big = new ListNode(); ListNode bigPre = big; while (head != null) { ListNode next = head.next; head.next = null; if (head.val < x) { smallPre.next = head; smallPre = head; } else { bigPre.next = head; bigPre = head; } head = next; } smallPre.next = big.next; return small.next; } }
執行耗時:0 ms,擊敗了100.00% 的Java使用者
記憶體消耗:37.8 MB,擊敗了50.35% 的Java使用者