题解 | #划分链表#
划分链表
http://www.nowcoder.com/practice/1dc1036be38f45f19000e48abe00b12f
import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * } */ public class Solution { /** * * @param head ListNode类 * @param x int整型 * @return ListNode类 */ public ListNode partition (ListNode head, int x) { //这道题其实就是分为两个单独的链表,一个大于等于x的链表,一个小于等于x的链表,然后再合并 // write code here ListNode smallHead = new ListNode(0); ListNode small = smallHead; ListNode largeHead = new ListNode(0); ListNode large = largeHead; while(head!=null){ if(head.val<x){ small.next = new ListNode(head.val); small = small.next; }else{ large.next = new ListNode(head.val); large = large.next; } head = head.next; } //这里是合并的逻辑,先将large链表最后一个节点的下一个节点置空,然后再将小链表的下一个节点设置为大节点的头节点的下一个节点,然后返回小链表的头节点 large.next = null; small.next = largeHead.next; return smallHead.next; } }