首页 > 代码库 > LeetCode: Partition List 解题报告
LeetCode: Partition List 解题报告
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.
For example,
Given 1->4->3->2->5->2 and x = 3,
return 1->2->2->4->3->5.
SOLUTION 1:
注意使用Dummynode来记录各个链条的头节点的前一个节点。这样我们可以轻松找回头节点。
1. Go Through the link, find the nodes which are bigger than N, create a new link.
2. After 1 done, just link the two links.
1 /** 2 * Definition for singly-linked list. 3 * public class ListNode { 4 * int val; 5 * ListNode next; 6 * ListNode(int x) { 7 * val = x; 8 * next = null; 9 * }10 * }11 */12 public class Solution {13 public ListNode partition(ListNode head, int x) {14 if (head == null) {15 return null;16 }17 18 ListNode dummy = new ListNode(0);19 dummy.next = head;20 21 ListNode pre = dummy;22 ListNode cur = head;23 24 // Record the big list.25 ListNode bigDummy = new ListNode(0);26 ListNode bigTail = bigDummy;27 28 while (cur != null) {29 if (cur.val >= x) {30 // Unlink the cur;31 pre.next = cur.next;32 33 // Add the cur to the tail of the new link.34 bigTail.next = cur;35 cur.next = null;36 37 // Refresh the bigTail.38 bigTail = cur;39 40 // 移除了一个元素的时候,pre不需要修改,因为cur已经移动到下一个位置了。41 } else {42 pre = pre.next;43 }44 45 cur = pre.next;46 }47 48 // Link the Big linklist to the smaller one.49 pre.next = bigDummy.next;50 51 return dummy.next;52 }53 }
CODE:
https://github.com/yuzhangcmu/LeetCode_algorithm/blob/master/list/Partition.java
LeetCode: Partition List 解题报告
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。