算法:分割链表
?原題
給定一個(gè)鏈表和一個(gè)特定值 x,對(duì)鏈表進(jìn)行分隔,使得所有小于 x 的節(jié)點(diǎn)都在大于或等于 x 的節(jié)點(diǎn)之前。
你應(yīng)當(dāng)保留兩個(gè)分區(qū)中每個(gè)節(jié)點(diǎn)的初始相對(duì)位置。
示例:
輸入: head = 1->4->3->2->5->2, x = 3 輸出: 1->2->2->4->3->5 //分割鏈表(鏈表不帶頭結(jié)點(diǎn)) //算法實(shí)現(xiàn)時(shí)可以使用頭結(jié)點(diǎn),最后返回結(jié)果時(shí)去掉class Solution {public ListNode partition(ListNode head, int x) {ListNode before_head = new ListNode(0);ListNode before = before_head;ListNode after_head = new ListNode(0);ListNode after = after_head;while (head != null) {if (head.val < x) {before.next = head;before = before.next;} else {after.next = head;after = after.next;}head = head.next;}after.next = null;before.next = after_head.next;return before_head.next;} }
參考鏈接:https://leetcode-cn.com/problems/partition-list/solution/fen-ge-lian-biao-by-leetcode/
?
總結(jié)
- 上一篇: 力扣:解码方法
- 下一篇: 算法:删除链表中重复的元素||